home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 101 / CD-ROM 101.iso / essenc / msxml / msxml4.msi / XML_SDK.cab / msxml2.idl.4576A2F1_959E_4BCA_94A9_596523761901 < prev    next >
Encoding:
Text File  |  2003-04-18  |  134.6 KB  |  3,985 lines

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992-1998. 
  5. //
  6. //  File: msxml.idl
  7. //
  8. //--------------------------------------------------------------------------
  9.  
  10. cpp_quote("//+-------------------------------------------------------------------------")
  11. cpp_quote("//")
  12. cpp_quote("//  Microsoft Windows")
  13. cpp_quote("//  Copyright (C) Microsoft Corporation, 1997-1998.")
  14. cpp_quote("//")
  15. cpp_quote("//--------------------------------------------------------------------------")
  16.  
  17. #include "msxml2did.h"
  18. #include <idispids.h>
  19.  
  20. #ifndef DO_NO_IMPORTS
  21. import "unknwn.idl";
  22. import "wtypes.idl";
  23. import "objidl.idl";
  24. import "oaidl.idl";
  25. #endif
  26.  
  27. // DOMDocument has a different guid in IE5.  In msxml4, it is a version independent guid.  To avoid
  28. // compile errors define it to be DOMDocment2
  29.  
  30. cpp_quote("#define DOMDocument DOMDocument2")
  31. cpp_quote("#define CLSID_DOMDocument CLSID_DOMDocument2")
  32. cpp_quote("")
  33. cpp_quote("#ifdef __USE_MSXML2_NAMESPACE__")
  34. cpp_quote("namespace MSXML2 {")
  35. cpp_quote("#endif")
  36.  
  37. cpp_quote("#ifndef __msxml_h__")
  38.  
  39. #ifndef IMPORTED_MSXML
  40. typedef struct _xml_error {
  41.     unsigned        _nLine;         // line number
  42.     BSTR            _pchBuf;        // current input buffer
  43.     unsigned        _cchBuf;        // number of chars in buffer
  44.     unsigned        _ich;           // index of the char when error occurred
  45.     BSTR            _pszFound;      // token found
  46.     BSTR            _pszExpected;   // token expected
  47.     DWORD           _reserved1;     // reserved
  48.     DWORD           _reserved2;     // reserved
  49. } XML_ERROR;
  50. // If, when importing this file into another idl file you receive duplicate definition
  51. // errors, define IMPORTED_MSXML on the command line to the MIDL compiler.
  52. #endif
  53. cpp_quote("#endif")
  54.  
  55. // msxml2 shares the same library as msxml4.  To make sure all of msxml4 is defined check for the SAX interfaces.
  56. // If they are not there then undefine the library so that msxml4 definitions are included.
  57.  
  58. cpp_quote("#ifndef __ISAXXMLReader_INTERFACE_DEFINED__")
  59. cpp_quote("#undef __MSXML2_LIBRARY_DEFINED__")
  60. cpp_quote("#endif")
  61.  
  62. [
  63.     uuid(f5078f18-c551-11d3-89b9-0000f81fe221),
  64.     version(4.0),
  65.     helpstring("Microsoft XML, v4.0"),
  66.     lcid(0x0000)
  67. ]
  68.  
  69. library MSXML2
  70. {
  71.  
  72. importlib("stdole32.tlb");
  73. importlib("stdole2.tlb");
  74.  
  75. // XMLDOM
  76. interface IXMLDOMImplementation;
  77. interface IXMLDOMNode;
  78. interface IXMLDOMDocumentFragment;
  79. interface IXMLDOMDocument;
  80. interface IXMLDOMDocument2;
  81. interface IXMLDOMNodeList;
  82. interface IXMLDOMNamedNodeMap;
  83. interface IXMLDOMCharacterData;
  84. interface IXMLDOMAttribute;
  85. interface IXMLDOMElement;
  86. interface IXMLDOMText;
  87. interface IXMLDOMComment;
  88. interface IXMLDOMProcessingInstruction;
  89. interface IXMLDOMCDATASection;
  90. interface IXMLDOMDocumentType;
  91. interface IXMLDOMNotation;
  92. interface IXMLDOMEntity;
  93. interface IXMLDOMEntityReference;
  94. interface IXMLDOMParseError;
  95. interface IXMLDOMSchemaCollection;
  96. interface IXTLRuntime;
  97. interface IXSLTemplate;
  98. interface IXSLProcessor;
  99.  
  100. // SAX
  101. interface ISAXXMLReader;
  102. interface ISAXXMLFilter;
  103. interface ISAXLocator;
  104. interface ISAXEntityResolver;
  105. interface ISAXContentHandler;
  106. interface ISAXDTDHandler;
  107. interface ISAXErrorHandler;
  108. interface ISAXLexicalHandler;
  109. interface ISAXDeclHandler;
  110. interface ISAXAttributes;
  111.  
  112. interface IVBSAXXMLReader;
  113. interface IVBSAXXMLFilter;
  114. interface IVBSAXLocator;
  115. interface IVBSAXEntityResolver;
  116. interface IVBSAXContentHandler;
  117. interface IVBSAXDTDHandler;
  118. interface IVBSAXErrorHandler;
  119. interface IVBSAXLexicalHandler;
  120. interface IVBSAXDeclHandler;
  121. interface IVBSAXAttributes;
  122.  
  123. interface IMXWriter;
  124. interface IMXAttributes;
  125. interface IMXReaderControl;
  126. interface IMXSchemaDeclHandler;
  127.  
  128. // SOM
  129. interface IXMLDOMSchemaCollection2;
  130. interface ISchemaStringCollection;
  131. interface ISchemaItemCollection;
  132. interface ISchemaItem;
  133. interface ISchema;
  134. interface ISchemaParticle;
  135. interface ISchemaAttribute;
  136. interface ISchemaElement;
  137. interface ISchemaType;
  138. interface ISchemaComplexType;
  139. interface ISchemaAttributeGroup;
  140. interface ISchemaModelGroup;
  141. interface ISchemaAny;
  142. interface ISchemaIdentityConstraint;
  143. interface ISchemaNotation;
  144.  
  145. // IE4 ObjectModel
  146. interface IXMLElementCollection;
  147. interface IXMLDocument;
  148. interface IXMLDocument2;
  149. interface IXMLElement;
  150. interface IXMLElement2;
  151. interface IXMLAttribute;
  152. interface IXMLError;
  153. interface IXMLElementNotificationSink;
  154.  
  155.  
  156. /// This is needed to avoid having the (SAX) ParseURL method 
  157. /// become the ParseURLA method.
  158. cpp_quote("#undef ParseURL")
  159.  
  160.  
  161. cpp_quote("#if !defined(__msxml_h__)")
  162. #ifndef IMPORTED_MSXML
  163. typedef [
  164. helpstring("Constants that define types for IXMLElement.")
  165. ] enum tagXMLEMEM_TYPE
  166. {
  167.     XMLELEMTYPE_ELEMENT,
  168.     XMLELEMTYPE_TEXT,
  169.     XMLELEMTYPE_COMMENT,
  170.     XMLELEMTYPE_DOCUMENT,
  171.     XMLELEMTYPE_DTD,
  172.     XMLELEMTYPE_PI,
  173.     XMLELEMTYPE_OTHER
  174. } XMLELEM_TYPE;
  175. #endif
  176. cpp_quote("#endif")
  177.  
  178. // IE4 msxml.h also defines __msxml_h__.  The only way to tell the difference between IE4 msxml.h and IE5 msxml.h is the
  179. // via the obsolete interface __IXMLElementNotificationSink_INTERFACE_DEFINED__ defined by IE4
  180. cpp_quote("#if !defined(__msxml_h__) || defined(__IXMLElementNotificationSink_INTERFACE_DEFINED__)")
  181.  
  182. typedef [
  183. helpstring("Constants that define a node's type")
  184. ] enum tagDOMNodeType 
  185. {  
  186.     NODE_INVALID, // = 0
  187.     NODE_ELEMENT, // = 1
  188.     NODE_ATTRIBUTE, // = 2
  189.     NODE_TEXT, // = 3
  190.     NODE_CDATA_SECTION, // = 4
  191.     NODE_ENTITY_REFERENCE, // = 5
  192.     NODE_ENTITY, // = 6
  193.     NODE_PROCESSING_INSTRUCTION, // = 7
  194.     NODE_COMMENT, // = 8
  195.     NODE_DOCUMENT, // = 9
  196.     NODE_DOCUMENT_TYPE, // = 10
  197.     NODE_DOCUMENT_FRAGMENT, // = 11
  198.     NODE_NOTATION // = 12
  199. } DOMNodeType; 
  200.  
  201. cpp_quote("#endif")
  202.  
  203. [
  204.     local, object,
  205.     uuid(2933BF80-7B36-11d2-B20E-00C04F983E60), // IID_INode
  206.     odl, 
  207.     dual,
  208.     oleautomation,
  209.     nonextensible,
  210.     helpstring("Core DOM node interface"),
  211.     pointer_default(unique)
  212. ]
  213. interface IXMLDOMNode : IDispatch
  214. {
  215.     // readonly attribute  wstring              nodeName;
  216.     [propget, id(DISPID_DOM_NODE_NODENAME), 
  217.      helpstring("name of the node")]
  218.     HRESULT nodeName(
  219.         [out, retval] BSTR * name);
  220.  
  221.     //          attribute  wstring              nodeValue;
  222.     [propget, id(DISPID_DOM_NODE_NODEVALUE), 
  223.      helpstring("value stored in the node")]
  224.     HRESULT nodeValue(
  225.         [out, retval] VARIANT * value);
  226.  
  227.     [propput, id(DISPID_DOM_NODE_NODEVALUE), 
  228.      helpstring("value stored in the node")]
  229.     HRESULT nodeValue(
  230.         [in] VARIANT value);
  231.  
  232.     // readonly attribute  unsigned short       nodeType;
  233.     [propget, id(DISPID_DOM_NODE_NODETYPE), 
  234.      helpstring("the node's type")]
  235.     HRESULT nodeType(
  236.         [out, retval] DOMNodeType * type);
  237.  
  238.     // readonly attribute  Node                 parentNode;
  239.     [propget, id(DISPID_DOM_NODE_PARENTNODE), 
  240.      helpstring("parent of the node")]
  241.     HRESULT parentNode(
  242.         [out, retval] IXMLDOMNode ** parent);
  243.  
  244.     // readonly attribute  NodeList             childNodes;
  245.     [propget, id(DISPID_DOM_NODE_CHILDNODES), 
  246.      helpstring("the collection of the node's children")]
  247.     HRESULT childNodes(
  248.         [out, retval] IXMLDOMNodeList ** childList);
  249.  
  250.     // readonly attribute  Node                 firstChild;
  251.     [propget,id(DISPID_DOM_NODE_FIRSTCHILD),
  252.      helpstring("first child of the node")]
  253.     HRESULT firstChild(
  254.         [out, retval] IXMLDOMNode ** firstChild);
  255.  
  256.     // readonly attribute  Node                 lastChild;
  257.     [propget,id(DISPID_DOM_NODE_LASTCHILD),
  258.      helpstring("last child of the node")]
  259.     HRESULT lastChild(
  260.         [out, retval] IXMLDOMNode ** lastChild);
  261.  
  262.     // readonly attribute  Node                 previousSibling;
  263.     [propget,id(DISPID_DOM_NODE_PREVIOUSSIBLING),
  264.      helpstring("left sibling of the node")]
  265.     HRESULT previousSibling(
  266.         [out, retval] IXMLDOMNode ** previousSibling);
  267.  
  268.     // readonly attribute  Node                 nextSibling;
  269.     [propget,id(DISPID_DOM_NODE_NEXTSIBLING),
  270.      helpstring("right sibling of the node")]
  271.     HRESULT nextSibling(
  272.         [out, retval] IXMLDOMNode ** nextSibling);
  273.  
  274.     // readonly attribute  NamedNodeMap         attributes;
  275.     [propget, id(DISPID_DOM_NODE_ATTRIBUTES), 
  276.      helpstring("the collection of the node's attributes")]
  277.     HRESULT attributes(
  278.         [out, retval] IXMLDOMNamedNodeMap ** attributeMap);
  279.  
  280.  
  281.     // Node                      insertBefore(in Node newChild, 
  282.     //                                        in Node refChild)
  283.     //                                        raises(DOMException);
  284.     [id(DISPID_DOM_NODE_INSERTBEFORE),
  285.      helpstring("insert a child node")]
  286.     HRESULT insertBefore(
  287.         [in] IXMLDOMNode * newChild,
  288.         [in] VARIANT refChild,
  289.         [out, retval] IXMLDOMNode ** outNewChild);
  290.  
  291.     // Node                      replaceChild(in Node newChild, 
  292.     //                                        in Node oldChild)
  293.     //                                        raises(DOMException);
  294.     [id(DISPID_DOM_NODE_REPLACECHILD),
  295.      helpstring("replace a child node")]
  296.     HRESULT replaceChild(
  297.         [in] IXMLDOMNode * newChild,
  298.         [in] IXMLDOMNode * oldChild,
  299.         [out, retval] IXMLDOMNode ** outOldChild);
  300.   
  301.     // Node                      removeChild(in Node childNode)
  302.     //                                       raises(DOMException);
  303.     [id(DISPID_DOM_NODE_REMOVECHILD),
  304.      helpstring("remove a child node")]
  305.     HRESULT removeChild(
  306.         [in] IXMLDOMNode * childNode,
  307.         [out, retval] IXMLDOMNode ** oldChild);
  308.  
  309.     // Node                      appendChild(in Node newChild);
  310.     [id(DISPID_DOM_NODE_APPENDCHILD),
  311.      helpstring("append a child node")]
  312.     HRESULT appendChild(
  313.         [in] IXMLDOMNode * newChild,
  314.         [out, retval] IXMLDOMNode ** outNewChild);
  315.  
  316.     // boolean                   hasChildNodes();
  317.     [id(DISPID_DOM_NODE_HASCHILDNODES),
  318.      helpstring("")]
  319.     HRESULT hasChildNodes(
  320.         [out, retval] VARIANT_BOOL * hasChild);
  321.  
  322.     // readonly attribute  Node                 ownerDocument;
  323.     [propget, id(DISPID_DOM_NODE_OWNERDOC), 
  324.      helpstring("document that contains the node")]
  325.     HRESULT ownerDocument(
  326.         [out, retval] IXMLDOMDocument ** DOMDocument);
  327.  
  328.     // Node                      cloneNode(in boolean deep);
  329.     [id(DISPID_DOM_NODE_CLONENODE),
  330.      helpstring("")]
  331.     HRESULT cloneNode(
  332.         [in] VARIANT_BOOL deep,
  333.         [out, retval] IXMLDOMNode ** cloneRoot);
  334.  
  335.     [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE),
  336.      helpstring("the type of node in string form")] 
  337.     HRESULT nodeTypeString(
  338.         [retval, out] BSTR * nodeType);
  339.  
  340.     [propget, id(DISPID_XMLDOM_NODE_TEXT),
  341.      helpstring("text content of the node and subtree")] 
  342.     HRESULT text(
  343.         [retval, out] BSTR * text);
  344.  
  345.     [propput, id(DISPID_XMLDOM_NODE_TEXT),
  346.      helpstring("text content of the node and subtree")] 
  347.     HRESULT text(
  348.         [in] BSTR text);
  349.  
  350.     [propget, id(DISPID_XMLDOM_NODE_SPECIFIED),
  351.      helpstring("indicates whether node is a default value")]
  352.     HRESULT specified(
  353.         [out, retval] VARIANT_BOOL * isSpecified);
  354.  
  355.     // DTD Navigation.
  356.     [propget, id(DISPID_XMLDOM_NODE_DEFINITION), 
  357.      helpstring("pointer to the definition of the node in the DTD or schema")] 
  358.     HRESULT definition(
  359.         [retval,out] IXMLDOMNode ** definitionNode);
  360.  
  361.     [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE), 
  362.      helpstring("get the strongly typed value of the node")] 
  363.     HRESULT nodeTypedValue(
  364.         [retval, out] VARIANT * typedValue);
  365.  
  366.     [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE), 
  367.      helpstring("get the strongly typed value of the node")] 
  368.     HRESULT nodeTypedValue(
  369.         [in] VARIANT typedValue);
  370.  
  371.     [propget, id(DISPID_XMLDOM_NODE_DATATYPE), 
  372.      helpstring("the data type of the node")] 
  373.     HRESULT dataType(
  374.         [retval, out] VARIANT * dataTypeName); // BSTR or VT_NULL
  375.  
  376.     [propput, id(DISPID_XMLDOM_NODE_DATATYPE), 
  377.      helpstring("the data type of the node")] 
  378.     HRESULT dataType(
  379.         [in] BSTR dataTypeName);
  380.  
  381.     [propget, id(DISPID_XMLDOM_NODE_XML), 
  382.      helpstring("return the XML source for the node and each of its descendants")] 
  383.     HRESULT xml(
  384.         [retval, out] BSTR * xmlString);
  385.  
  386.     [id(DISPID_XMLDOM_NODE_TRANSFORMNODE), 
  387.      helpstring("apply the stylesheet to the subtree")] 
  388.     HRESULT transformNode(
  389.         [in] IXMLDOMNode * stylesheet,
  390.         [retval, out] BSTR * xmlString);
  391.  
  392.     [id(DISPID_XMLDOM_NODE_SELECTNODES), 
  393.      helpstring("execute query on the subtree")]
  394.     HRESULT selectNodes(
  395.         [in] BSTR queryString,
  396.         [retval, out] IXMLDOMNodeList** resultList);
  397.  
  398.     [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE), 
  399.      helpstring("execute query on the subtree")]
  400.     HRESULT selectSingleNode(
  401.         [in] BSTR queryString,
  402.         [retval, out] IXMLDOMNode** resultNode);
  403.  
  404.     [propget,id(DISPID_XMLDOM_NODE_PARSED), 
  405.      helpstring("has sub-tree been completely parsed")]
  406.     HRESULT parsed(
  407.         [retval, out] VARIANT_BOOL * isParsed);
  408.  
  409.     [propget, id(DISPID_XMLDOM_NODE_NAMESPACE), 
  410.      helpstring("the URI for the namespace applying to the node")] 
  411.     HRESULT namespaceURI(
  412.         [retval, out] BSTR * namespaceURI);
  413.  
  414.     [propget, id(DISPID_XMLDOM_NODE_PREFIX), 
  415.      helpstring("the prefix for the namespace applying to the node")] 
  416.     HRESULT prefix(
  417.         [retval, out] BSTR * prefixString);
  418.  
  419.     [propget, id(DISPID_XMLDOM_NODE_BASENAME), 
  420.      helpstring("the base name of the node (nodename with the prefix stripped off)")] 
  421.     HRESULT baseName(
  422.         [retval, out] BSTR * nameString);
  423.  
  424.     [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT), 
  425.      helpstring("apply the stylesheet to the subtree, returning the result through a document or a stream")] 
  426.     HRESULT transformNodeToObject(
  427.         [in] IXMLDOMNode * stylesheet,
  428.         [in] VARIANT outputObject);
  429.  
  430. };
  431.  
  432. [
  433.     local, object,
  434.     uuid(2933BF81-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMDocument
  435.     odl, 
  436.     dual,
  437.     oleautomation,
  438.     nonextensible,
  439.     pointer_default(unique),
  440.     hidden
  441. ]
  442. interface IXMLDOMDocument : IXMLDOMNode 
  443. {
  444.     // readonly attribute  DocumentType         doctype;
  445.     [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE),
  446.      helpstring("node corresponding to the DOCTYPE")]
  447.     HRESULT doctype(
  448.         [out, retval] IXMLDOMDocumentType ** documentType); 
  449.  
  450.     // readonly attribute  DOMImplementation    implementation;
  451.     [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION),
  452.      helpstring("info on this DOM implementation")]
  453.     HRESULT implementation(
  454.         [out, retval] IXMLDOMImplementation ** impl);
  455.  
  456.     // attribute  Element              documentElement;
  457.     [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT),
  458.      helpstring("the root of the tree")]
  459.     HRESULT documentElement(
  460.         [out, retval] IXMLDOMElement ** DOMElement);
  461.  
  462.     [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT),
  463.      helpstring("the root of the tree")]
  464.     HRESULT documentElement(
  465.         [in] IXMLDOMElement * DOMElement);
  466.  
  467.     // Element                   createElement(in wstring tagName);
  468.     [id(DISPID_DOM_DOCUMENT_CREATEELEMENT),
  469.      helpstring("create an Element node")]
  470.     HRESULT createElement(
  471.         [in] BSTR tagName,
  472.         [out, retval] IXMLDOMElement ** element);
  473.  
  474.     // DocumentFragment          createDocumentFragment();
  475.     [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT),
  476.      helpstring("create a DocumentFragment node")]
  477.     HRESULT createDocumentFragment(
  478.         [out, retval] IXMLDOMDocumentFragment ** docFrag );
  479.  
  480.     // Text                      createTextNode(in wstring data);
  481.     [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE),
  482.      helpstring("create a text node")]
  483.     HRESULT createTextNode(
  484.         [in] BSTR data,
  485.         [out, retval] IXMLDOMText ** text);
  486.  
  487.     // Comment                   createComment(in wstring data);
  488.     [id(DISPID_DOM_DOCUMENT_CREATECOMMENT),
  489.      helpstring("create a comment node")]
  490.     HRESULT createComment(
  491.         [in] BSTR data,
  492.         [out, retval] IXMLDOMComment ** comment);
  493.  
  494.     // CDATASection              createCDATASection(in wstring data);
  495.     [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION),
  496.      helpstring("create a CDATA section node")]
  497.     HRESULT createCDATASection(
  498.         [in] BSTR data,
  499.         [out, retval] IXMLDOMCDATASection ** cdata);
  500.  
  501.     // ProcessingInstruction     createProcessingInstruction(in wstring target, 
  502.     //                                                       in wstring data);
  503.     [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION),
  504.      helpstring("create a processing instruction node")]
  505.     HRESULT createProcessingInstruction(
  506.         [in] BSTR target,
  507.         [in] BSTR data,
  508.         [out, retval] IXMLDOMProcessingInstruction ** pi);
  509.  
  510.     // Attribute                 createAttribute(in wstring name);
  511.     [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE),
  512.      helpstring("create an attribute node")]
  513.     HRESULT createAttribute(
  514.         [in] BSTR name,
  515.         [out, retval] IXMLDOMAttribute ** attribute);
  516.  
  517.     // EntityReference           createEntityReference(in wstring name);
  518.     [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE),
  519.      helpstring("create an entity reference node")]
  520.     HRESULT createEntityReference(
  521.         [in] BSTR name,
  522.         [out, retval] IXMLDOMEntityReference ** entityRef);
  523.  
  524.     // NodeList                  getElementsByTagName(in wstring tagname);
  525.     [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME),
  526.      helpstring("build a list of elements by name")]
  527.     HRESULT getElementsByTagName(
  528.         [in] BSTR tagName,
  529.         [out, retval] IXMLDOMNodeList ** resultList);
  530.  
  531.     [id(DISPID_XMLDOM_DOCUMENT_CREATENODE), 
  532.      helpstring("create a node of the specified node type and name")] 
  533.     HRESULT createNode(
  534.         [in] VARIANT Type, 
  535.         [in] BSTR name, 
  536.         [in] BSTR namespaceURI,
  537.         [retval, out] IXMLDOMNode ** node);
  538.  
  539.     [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID), 
  540.      helpstring("retrieve node from it's ID")]
  541.     HRESULT nodeFromID( 
  542.         [in] BSTR idString,
  543.         [retval, out] IXMLDOMNode ** node);
  544.  
  545.     [id(DISPID_XMLDOM_DOCUMENT_LOAD), 
  546.      helpstring("load document from the specified XML source")] 
  547.     HRESULT load(
  548.         [in] VARIANT xmlSource,
  549.         [out, retval] VARIANT_BOOL * isSuccessful);
  550.  
  551.     [propget, id(DISPID_READYSTATE), 
  552.      helpstring("get the state of the XML document")] 
  553.     HRESULT readyState(
  554.         [retval, out] long * value);
  555.  
  556.     [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR), 
  557.      helpstring("get the last parser error")] 
  558.     HRESULT parseError(
  559.         [retval, out] IXMLDOMParseError ** errorObj);
  560.  
  561.     [propget, id(DISPID_XMLDOM_DOCUMENT_URL), 
  562.      helpstring("get the URL for the loaded XML document")] 
  563.     HRESULT url(
  564.         [retval, out] BSTR * urlString);
  565.  
  566.     [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC), 
  567.      helpstring("flag for asynchronous download")] 
  568.     HRESULT async(
  569.         [retval, out] VARIANT_BOOL * isAsync);
  570.  
  571.     [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC), 
  572.      helpstring("flag for asynchronous download")] 
  573.     HRESULT async(
  574.         [in] VARIANT_BOOL isAsync);
  575.  
  576.     [id(DISPID_XMLDOM_DOCUMENT_ABORT), 
  577.      helpstring("abort an asynchronous download")] 
  578.     HRESULT abort();
  579.  
  580.     [id(DISPID_XMLDOM_DOCUMENT_LOADXML), 
  581.      helpstring("load the document from a string")] 
  582.     HRESULT loadXML( 
  583.         [in] BSTR bstrXML,
  584.         [out, retval] VARIANT_BOOL * isSuccessful);
  585.  
  586.     [id(DISPID_XMLDOM_DOCUMENT_SAVE), 
  587.      helpstring("save the document to a specified destination")] 
  588.     HRESULT save( 
  589.         [in] VARIANT destination);
  590.  
  591.     [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE), 
  592.      helpstring("indicates whether the parser performs validation")] 
  593.     HRESULT validateOnParse(
  594.         [retval, out] VARIANT_BOOL * isValidating);
  595.  
  596.     [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE), 
  597.      helpstring("indicates whether the parser performs validation")] 
  598.     HRESULT validateOnParse(
  599.         [in] VARIANT_BOOL isValidating);
  600.  
  601.     [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE),
  602.      helpstring("indicates whether the parser resolves references to external DTD/Entities/Schema")]
  603.     HRESULT resolveExternals(
  604.         [retval,out] VARIANT_BOOL * isResolving);
  605.  
  606.     [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE),
  607.      helpstring("indicates whether the parser resolves references to external DTD/Entities/Schema")]
  608.     HRESULT resolveExternals(
  609.         [in] VARIANT_BOOL isResolving);
  610.  
  611.     [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE),
  612.      helpstring("indicates whether the parser preserves whitespace")]
  613.     HRESULT preserveWhiteSpace(
  614.         [retval,out] VARIANT_BOOL * isPreserving);
  615.  
  616.     [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE),
  617.      helpstring("indicates whether the parser preserves whitespace")]
  618.     HRESULT preserveWhiteSpace(
  619.         [in] VARIANT_BOOL isPreserving);
  620.  
  621.     [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE), 
  622.      helpstring("register a readystatechange event handler")]
  623.     HRESULT onreadystatechange(
  624.         [in] VARIANT readystatechangeSink);
  625.  
  626.     [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE), 
  627.      helpstring("register an ondataavailable event handler")]
  628.     HRESULT ondataavailable(
  629.         [in] VARIANT ondataavailableSink);
  630.  
  631.     [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE), 
  632.      helpstring("register an ontransformnode event handler")]
  633.     HRESULT ontransformnode(
  634.         [in] VARIANT ontransformnodeSink);
  635. };
  636.  
  637.  
  638. [
  639.     local, object,
  640.     uuid(373984c8-b845-449b-91e7-45ac83036ade),
  641.     odl, 
  642.     dual,
  643.     oleautomation,
  644.     nonextensible,
  645.     helpstring("XML Schemas Collection"),
  646.     pointer_default(unique)
  647. ]
  648. interface IXMLDOMSchemaCollection : IDispatch
  649. {
  650.     [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADD), 
  651.      helpstring("add a new schema")]
  652.     HRESULT add(
  653.         [in] BSTR namespaceURI,
  654.         [in] VARIANT var);
  655.  
  656.     [id(DISPID_XMLDOM_SCHEMACOLLECTION_GET),
  657.      helpstring("lookup schema by namespaceURI")]
  658.     HRESULT get(
  659.         [in] BSTR namespaceURI,
  660.         [out,retval] IXMLDOMNode ** schemaNode);
  661.  
  662.     [id(DISPID_XMLDOM_SCHEMACOLLECTION_REMOVE),
  663.      helpstring("remove schema by namespaceURI")]
  664.     HRESULT remove(
  665.         [in] BSTR namespaceURI);
  666.  
  667.     [id(DISPID_XMLDOM_SCHEMACOLLECTION_LENGTH),
  668.      helpstring("number of schemas in collection"), propget]
  669.     HRESULT length(
  670.         [out, retval] long * length);
  671.  
  672.     [propget, id(DISPID_VALUE),
  673.      helpstring("Get namespaceURI for schema by index")]
  674.     HRESULT namespaceURI(
  675.         [in] long index,
  676.         [out, retval] BSTR * length);
  677.  
  678.     [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADDCOLLECTION),
  679.      helpstring("copy & merge other collection into this one")]
  680.     HRESULT addCollection(
  681.         [in] IXMLDOMSchemaCollection * otherCollection);
  682.  
  683.     [propget, restricted, hidden, 
  684.      id(DISPID_NEWENUM)] 
  685.     HRESULT _newEnum(
  686.         [retval, out] IUnknown ** ppUnk);
  687. };
  688.  
  689.  
  690. [
  691.     local, object,
  692.     uuid(2933BF95-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMDocument2
  693.     odl, 
  694.     dual,
  695.     oleautomation,
  696.     nonextensible,
  697.     pointer_default(unique)
  698. ]
  699. interface IXMLDOMDocument2 : IXMLDOMDocument
  700. {
  701.     [propget, id(DISPID_XMLDOM_DOCUMENT2_NAMESPACES),
  702.      helpstring("A collection of all namespaces for this document")]
  703.     HRESULT namespaces(
  704.         [out,retval] IXMLDOMSchemaCollection ** namespaceCollection);
  705.  
  706.     [propget, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS),
  707.      helpstring("The associated schema cache")]
  708.     HRESULT schemas(
  709.         [out,retval] VARIANT * otherCollection);
  710.  
  711.     [propputref, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS),
  712.      helpstring("The associated schema cache")]
  713.     HRESULT schemas(
  714.         [in] VARIANT otherCollection);
  715.  
  716.     [id(DISPID_XMLDOM_DOCUMENT2_VALIDATE),
  717.         helpstring("perform runtime validation on the currently loaded XML document")]
  718.     HRESULT validate(
  719.         [retval, out] IXMLDOMParseError ** errorObj);
  720.  
  721.     [id(DISPID_XMLDOM_DOCUMENT2_SETPROPERTY),
  722.         helpstring("set the value of the named property")]
  723.     HRESULT setProperty(
  724.         [in] BSTR name,
  725.         [in] VARIANT value);
  726.  
  727.     [id(DISPID_XMLDOM_DOCUMENT2_GETPROPERTY),
  728.         helpstring("get the value of the named property")]
  729.     HRESULT getProperty(
  730.         [in] BSTR name,
  731.         [out,retval] VARIANT * value);
  732. };
  733.  
  734.  
  735. [
  736.     local, object,
  737.     uuid(2933BF82-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMNodeList
  738.     odl, 
  739.     dual,
  740.     oleautomation,
  741.     nonextensible,
  742.     pointer_default(unique)
  743. ]
  744. interface IXMLDOMNodeList : IDispatch
  745. {
  746.     // Node                      item(in unsigned long index);
  747.     [propget, id(DISPID_VALUE),
  748.      helpstring("collection of nodes")]
  749.     HRESULT item(
  750.         [in] long index,
  751.         [out, retval] IXMLDOMNode ** listItem);
  752.  
  753.     // readonly attribute  unsigned long        length;
  754.     [propget, id(DISPID_DOM_NODELIST_LENGTH),
  755.      helpstring("number of nodes in the collection")]
  756.     HRESULT length(
  757.         [out, retval] long * listLength);
  758.  
  759.     [id(DISPID_XMLDOM_NODELIST_NEXTNODE),
  760.      helpstring("get next node from iterator")]
  761.     HRESULT nextNode(
  762.         [out, retval] IXMLDOMNode ** nextItem);
  763.  
  764.     [id(DISPID_XMLDOM_NODELIST_RESET),
  765.      helpstring("reset the position of iterator")]
  766.     HRESULT reset();
  767.  
  768.     [propget, restricted, hidden, 
  769.      id(DISPID_NEWENUM)] 
  770.     HRESULT _newEnum(
  771.         [retval, out] IUnknown ** ppUnk);
  772. };
  773.  
  774.  
  775. [
  776.     local, object,
  777.     uuid(AA634FC7-5888-44a7-A257-3A47150D3A0E), // IID_IXMLDOMSelection
  778.     odl,
  779.     dual,
  780.     oleautomation,
  781.     nonextensible,
  782.     pointer_default(unique)
  783. ]
  784. interface IXMLDOMSelection : IXMLDOMNodeList
  785. {
  786.     [propget, id(DISPID_XMLDOM_SELECTION_EXPR),
  787.      helpstring("selection expression")]
  788.     HRESULT expr(
  789.         [out, retval] BSTR * expression);
  790.  
  791.     [propput, id(DISPID_XMLDOM_SELECTION_EXPR),
  792.      helpstring("selection expression")]
  793.     HRESULT expr(
  794.         [in] BSTR expression);
  795.  
  796.     [propget, id(DISPID_XMLDOM_SELECTION_CONTEXT),
  797.      helpstring("nodes to apply selection expression to")]
  798.     HRESULT context(
  799.         [out, retval] IXMLDOMNode ** ppNode);
  800.  
  801.     [propputref, id(DISPID_XMLDOM_SELECTION_CONTEXT),
  802.      helpstring("nodes to apply selection expression to")]
  803.     HRESULT context(
  804.         [in] IXMLDOMNode * pNode);
  805.  
  806.     [id(DISPID_XMLDOM_SELECTION_PEEKNODE),
  807.      helpstring("gets the next node without advancing the list position")]
  808.     HRESULT peekNode(
  809.         [out, retval] IXMLDOMNode ** ppNode);
  810.  
  811.     [id(DISPID_XMLDOM_SELECTION_MATCHES),
  812.      helpstring("checks to see if the node matches the pattern")]
  813.     HRESULT matches(
  814.         [in] IXMLDOMNode * pNode,
  815.         [out, retval] IXMLDOMNode ** ppNode);
  816.  
  817.     [id(DISPID_XMLDOM_SELECTION_REMOVENEXT),
  818.      helpstring("removes the next node")]
  819.     HRESULT removeNext(
  820.         [out, retval] IXMLDOMNode ** ppNode);
  821.  
  822.     [id(DISPID_XMLDOM_SELECTION_REMOVEALL),
  823.      helpstring("removes all the nodes that match the selection")]
  824.     HRESULT removeAll();
  825.  
  826.     [id(DISPID_XMLDOM_SELECTION_CLONE),
  827.      helpstring("clone this object with the same position and context")]
  828.     HRESULT clone(
  829.         [out, retval] IXMLDOMSelection ** ppNode);
  830.  
  831.     [id(DISPID_XMLDOM_SELECTION_GETPROPERTY),
  832.         helpstring("get the value of the named property")]
  833.     HRESULT getProperty(
  834.         [in] BSTR name,
  835.         [out,retval] VARIANT * value);
  836.  
  837.     [id(DISPID_XMLDOM_SELECTION_SETPROPERTY),
  838.         helpstring("set the value of the named property")]
  839.     HRESULT setProperty(
  840.         [in] BSTR name,
  841.         [in] VARIANT value);
  842. };
  843.  
  844.  
  845. [
  846.     local, object,
  847.     uuid(2933BF83-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMNamedNodeMap
  848.     odl, 
  849.     dual,
  850.     oleautomation,
  851.     nonextensible,
  852.     pointer_default(unique)
  853. ]
  854. interface IXMLDOMNamedNodeMap : IDispatch
  855. {
  856.     // Node                      getNamedItem(in wstring name);
  857.     [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM),
  858.      helpstring("lookup item by name")]
  859.     HRESULT getNamedItem(
  860.         [in] BSTR name,
  861.         [out, retval] IXMLDOMNode ** namedItem);
  862.  
  863.     // void                      setNamedItem(in Node arg);
  864.     [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM),
  865.      helpstring("set item by name")]
  866.     HRESULT setNamedItem(
  867.         [in] IXMLDOMNode * newItem,
  868.         [out, retval] IXMLDOMNode ** nameItem);
  869.  
  870.     // Node                      removeNamedItem(in wstring name);
  871.     [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM),
  872.      helpstring("remove item by name")]
  873.     HRESULT removeNamedItem(
  874.         [in] BSTR name,
  875.         [out, retval] IXMLDOMNode ** namedItem);
  876.  
  877.     // Node                      item(in unsigned long index);
  878.     [propget, id(DISPID_VALUE),
  879.      helpstring("collection of nodes")]
  880.     HRESULT item(
  881.         [in] long index,
  882.         [out, retval] IXMLDOMNode ** listItem);
  883.  
  884.     // readonly attribute  unsigned long        length;
  885.     [propget, id(DISPID_DOM_NODELIST_LENGTH),
  886.      helpstring("number of nodes in the collection")]
  887.     HRESULT length(
  888.         [out, retval] long * listLength);
  889.  
  890.     // Node                      getQualifiedItem(in wstring name,in Node namespace);
  891.     [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM),
  892.      helpstring("lookup the item by name and namespace")]
  893.     HRESULT getQualifiedItem(
  894.         [in] BSTR baseName,
  895.         [in] BSTR namespaceURI,
  896.         [out, retval] IXMLDOMNode ** qualifiedItem);
  897.  
  898.     // Node                      removeQualifiedItem(in wstring name,in Node namespace);
  899.     [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM),
  900.      helpstring("remove the item by name and namespace")]
  901.     HRESULT removeQualifiedItem(
  902.         [in] BSTR baseName,
  903.         [in] BSTR namespaceURI,
  904.         [out, retval] IXMLDOMNode ** qualifiedItem);
  905.  
  906.     [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE),
  907.      helpstring("get next node from iterator")]
  908.     HRESULT nextNode(
  909.         [out, retval] IXMLDOMNode ** nextItem);
  910.  
  911.     [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET),
  912.      helpstring("reset the position of iterator")]
  913.     HRESULT reset();
  914.  
  915.     [propget, restricted, hidden, 
  916.      id(DISPID_NEWENUM)] 
  917.     HRESULT _newEnum(
  918.         [retval, out] IUnknown ** ppUnk);
  919. };
  920.  
  921.  
  922. [
  923.     local, object,
  924.     uuid(3efaa413-272f-11d2-836f-0000f87a7782), // IID_IXMLDOMDocumentFragment
  925.     odl, 
  926.     dual,
  927.     oleautomation,
  928.     nonextensible,
  929.     pointer_default(unique)
  930. ]
  931. interface IXMLDOMDocumentFragment : IXMLDOMNode 
  932. {
  933. };
  934.  
  935.  
  936. [
  937.     local, object,
  938.     uuid(2933BF84-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMCharacterData
  939.     odl, 
  940.     dual,
  941.     oleautomation,
  942.     nonextensible,
  943.     pointer_default(unique)
  944. ]
  945. interface IXMLDOMCharacterData : IXMLDOMNode 
  946. {
  947.     //          attribute  wstring              data;
  948.     [propget, id(DISPID_DOM_DATA_DATA),
  949.      helpstring("value of the node")]
  950.     HRESULT data(
  951.         [out, retval] BSTR * data);
  952.  
  953.     [propput, id(DISPID_DOM_DATA_DATA),
  954.      helpstring("value of the node")]
  955.     HRESULT data(
  956.         [in] BSTR data);
  957.     
  958.     // readonly attribute  unsigned long        length;
  959.     [propget, id(DISPID_DOM_DATA_LENGTH),
  960.      helpstring("number of characters in value")]
  961.     HRESULT length(
  962.         [out, retval] long * dataLength);
  963.  
  964.     // wstring                   substring(in unsigned long offset, 
  965.     //                                     in unsigned long count)
  966.     //                                     raises(DOMException);
  967.     [id(DISPID_DOM_DATA_SUBSTRING),
  968.      helpstring("retrieve substring of value")]
  969.     HRESULT substringData(
  970.         [in] long offset,
  971.         [in] long count,
  972.         [out, retval] BSTR * data);
  973.  
  974.     // void                      append(in wstring arg);
  975.     [id(DISPID_DOM_DATA_APPEND),
  976.      helpstring("append string to value")]
  977.     HRESULT appendData(
  978.         [in] BSTR data);
  979.  
  980.     // void                      insert(in unsigned long offset, 
  981.     //                                  in wstring arg)
  982.     //                                  raises(DOMException);
  983.     [id(DISPID_DOM_DATA_INSERT),
  984.      helpstring("insert string into value")]
  985.     HRESULT insertData(
  986.         [in] long offset,
  987.         [in] BSTR data);
  988.  
  989.     // void                      delete(in unsigned long offset, 
  990.     //                                  in unsigned long count)
  991.     //                                  raises(DOMException);
  992.     [id(DISPID_DOM_DATA_DELETE),
  993.      helpstring("delete string within the value")]
  994.     HRESULT deleteData(
  995.         [in] long offset,
  996.         [in] long count);
  997.  
  998.     // void                      replace(in unsigned long offset, 
  999.     //                                   in unsigned long count, 
  1000.     //                                   in wstring arg)
  1001.     //                                   raises(DOMException);
  1002.     [id(DISPID_DOM_DATA_REPLACE),
  1003.      helpstring("replace string within the value")]
  1004.     HRESULT replaceData(
  1005.         [in] long offset,
  1006.         [in] long count,
  1007.         [in] BSTR data);
  1008. };
  1009.  
  1010.  
  1011. [
  1012.     local, object,
  1013.     uuid(2933BF85-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMAttribute
  1014.     odl, 
  1015.     dual,
  1016.     oleautomation,
  1017.     nonextensible,
  1018.     pointer_default(unique)
  1019. ]
  1020. interface IXMLDOMAttribute : IXMLDOMNode 
  1021. {
  1022.     // wstring                   name;
  1023.     [propget, id(DISPID_DOM_ATTRIBUTE_GETNAME),
  1024.      helpstring("get name of the attribute")]
  1025.     HRESULT name(
  1026.         [out, retval] BSTR * attributeName);
  1027.  
  1028.     //         attribute  boolean              specified;
  1029.     // ! This is defined as an extended property on IXMLDOMNode
  1030.  
  1031.     // attribute wstring                   value;
  1032.     [propget, id(DISPID_DOM_ATTRIBUTE_VALUE),
  1033.      helpstring("string value of the attribute")]
  1034.     HRESULT value(
  1035.         [out, retval] VARIANT * attributeValue);
  1036.  
  1037.     [propput, id(DISPID_DOM_ATTRIBUTE_VALUE),
  1038.      helpstring("string value of the attribute")]
  1039.     HRESULT value(
  1040.         [in] VARIANT attributeValue);
  1041. };
  1042.  
  1043.  
  1044. [
  1045.     local, object,
  1046.     uuid(2933BF86-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMElement
  1047.     odl, 
  1048.     dual,
  1049.     oleautomation,
  1050.     nonextensible,
  1051.     pointer_default(unique)
  1052. ]
  1053. interface IXMLDOMElement : IXMLDOMNode 
  1054. {
  1055.     // readonly attribute wstring                   tagName;
  1056.     [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME),
  1057.      helpstring("get the tagName of the element")]
  1058.     HRESULT tagName(
  1059.         [out, retval] BSTR * tagName);
  1060.  
  1061.     // wstring                   getAttribute(in wstring name);
  1062.     [id(DISPID_DOM_ELEMENT_GETATTRIBUTE),
  1063.      helpstring("look up the string value of an attribute by name")]
  1064.     HRESULT getAttribute(
  1065.         [in] BSTR name,
  1066.         [out, retval] VARIANT * value);
  1067.  
  1068.     // void                      setAttribute(in string name, 
  1069.     //                                        in string value);
  1070.     [id(DISPID_DOM_ELEMENT_SETATTRIBUTE),
  1071.      helpstring("set the string value of an attribute by name")]
  1072.     HRESULT setAttribute(
  1073.         [in] BSTR name,
  1074.         [in] VARIANT value);
  1075.  
  1076.     // void                      removeAttribute(in wstring name);
  1077.     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE),
  1078.      helpstring("remove an attribute by name")]
  1079.     HRESULT removeAttribute(
  1080.         [in] BSTR name);
  1081.  
  1082.     // Attribute                 getAttributeNode(in wstring name);
  1083.     [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE),
  1084.      helpstring("look up the attribute node by name")]
  1085.     HRESULT getAttributeNode(
  1086.         [in] BSTR name,
  1087.         [out, retval] IXMLDOMAttribute ** attributeNode);
  1088.  
  1089.     // void                      setAttributeNode(in Attribute newAttr);
  1090.     [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE),
  1091.      helpstring("set the specified attribute on the element")]
  1092.     HRESULT setAttributeNode(
  1093.         [in] IXMLDOMAttribute * DOMAttribute,
  1094.         [out, retval] IXMLDOMAttribute ** attributeNode);
  1095.  
  1096.     // void                      removeAttributeNode(in Attribute oldAttr);
  1097.     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE),
  1098.      helpstring("remove the specified attribute")]
  1099.     HRESULT removeAttributeNode(
  1100.         [in] IXMLDOMAttribute * DOMAttribute,
  1101.         [out, retval] IXMLDOMAttribute ** attributeNode);
  1102.  
  1103.     // NodeList                  getElementsByTagName(in wstring tagname);
  1104.     [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME),
  1105.      helpstring("build a list of elements by name")]
  1106.     HRESULT getElementsByTagName(
  1107.         [in] BSTR tagName,
  1108.         [out, retval] IXMLDOMNodeList ** resultList);
  1109.  
  1110.     // void                      normalize();
  1111.     [id(DISPID_DOM_ELEMENT_NORMALIZE),
  1112.      helpstring("collapse all adjacent text nodes in sub-tree")]
  1113.     HRESULT normalize();
  1114. };
  1115.  
  1116.  
  1117. [
  1118.     local, object,
  1119.     uuid(2933BF87-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMText
  1120.     odl, 
  1121.     dual,
  1122.     oleautomation,
  1123.     nonextensible,
  1124.     pointer_default(unique)
  1125. ]
  1126. interface IXMLDOMText : IXMLDOMCharacterData 
  1127. {
  1128.     // Text                      splitText(in unsigned long offset);
  1129.     [id(DISPID_DOM_TEXT_SPLITTEXT),
  1130.      helpstring("split the text node into two text nodes at the position specified")]
  1131.     HRESULT splitText(
  1132.         [in] long offset,
  1133.         [out, retval] IXMLDOMText ** rightHandTextNode);
  1134. };
  1135.  
  1136.  
  1137. [
  1138.     local, object,
  1139.     uuid(2933BF88-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMComment
  1140.     odl, 
  1141.     dual,
  1142.     oleautomation,
  1143.     nonextensible,
  1144.     pointer_default(unique)
  1145. ]
  1146. interface IXMLDOMComment : IXMLDOMCharacterData 
  1147. {
  1148. };
  1149.  
  1150.  
  1151. [
  1152.     local, object,
  1153.     uuid(2933BF89-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMProcessingInstruction
  1154.     odl, 
  1155.     dual,
  1156.     oleautomation,
  1157.     nonextensible,
  1158.     pointer_default(unique)
  1159. ]
  1160. interface IXMLDOMProcessingInstruction : IXMLDOMNode 
  1161. {
  1162.     //         read-only attribute  wstring              target;
  1163.     [propget, id(DISPID_DOM_PI_TARGET),
  1164.      helpstring("the target")]
  1165.     HRESULT target(
  1166.         [out, retval] BSTR * name);
  1167.  
  1168.     //         attribute  wstring              data;
  1169.     [propget, id(DISPID_DOM_PI_DATA),
  1170.      helpstring("the data")]
  1171.     HRESULT data(
  1172.         [out, retval] BSTR * value);
  1173.  
  1174.     [propput, id(DISPID_DOM_PI_DATA),
  1175.      helpstring("the data")]
  1176.     HRESULT data(
  1177.         [in] BSTR value);
  1178. };
  1179.  
  1180.  
  1181. [
  1182.     local, object,
  1183.     uuid(2933BF8A-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMCDATASection
  1184.     odl, 
  1185.     dual,
  1186.     oleautomation,
  1187.     nonextensible,
  1188.     pointer_default(unique)
  1189. ]
  1190. interface IXMLDOMCDATASection : IXMLDOMText 
  1191. {
  1192. };
  1193.  
  1194.  
  1195. [
  1196.     local, object,
  1197.     uuid(2933BF8B-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMDocumentType
  1198.     odl, 
  1199.     dual,
  1200.     oleautomation,
  1201.     nonextensible,
  1202.     pointer_default(unique)
  1203. ]
  1204. interface IXMLDOMDocumentType : IXMLDOMNode 
  1205. {
  1206.     //          readonly attribute  wstring              name;
  1207.     [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME),
  1208.      helpstring("name of the document type (root of the tree)")]
  1209.     HRESULT name(
  1210.         [out, retval] BSTR * rootName);
  1211.  
  1212.     // readonly attribute  NamedNodeMap         entities;
  1213.     [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES),
  1214.      helpstring("a list of entities in the document")]
  1215.     HRESULT entities(
  1216.         [out, retval] IXMLDOMNamedNodeMap ** entityMap);
  1217.  
  1218.     // readonly attribute  NamedNodeMap         notations;
  1219.     [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS),
  1220.      helpstring("a list of notations in the document")]
  1221.     HRESULT notations(
  1222.         [out, retval] IXMLDOMNamedNodeMap ** notationMap);
  1223. };
  1224.  
  1225.  
  1226. [
  1227.     local, object,
  1228.     uuid(2933BF8C-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMNotation
  1229.     odl, 
  1230.     dual,
  1231.     oleautomation,
  1232.     nonextensible,
  1233.     pointer_default(unique)
  1234. ]
  1235. interface IXMLDOMNotation : IXMLDOMNode 
  1236. {
  1237.     //         attribute  wstring              publicId;
  1238.     [propget, id(DISPID_DOM_NOTATION_PUBLICID),
  1239.      helpstring("the public ID")]
  1240.     HRESULT publicId(
  1241.         [out, retval] VARIANT * publicID);
  1242.  
  1243.     //         attribute  wstring              systemId;
  1244.     [propget, id(DISPID_DOM_NOTATION_SYSTEMID),
  1245.      helpstring("the system ID")]
  1246.     HRESULT systemId(
  1247.         [out, retval] VARIANT * systemID);
  1248. };
  1249.  
  1250.  
  1251. [
  1252.     local, object,
  1253.     uuid(2933BF8D-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMEntity
  1254.     odl, 
  1255.     dual,
  1256.     oleautomation,
  1257.     nonextensible,
  1258.     pointer_default(unique)
  1259. ]
  1260. interface IXMLDOMEntity : IXMLDOMNode 
  1261. {
  1262.     //         attribute  wstring              publicId;
  1263.     [propget, id(DISPID_DOM_ENTITY_PUBLICID),
  1264.      helpstring("the public ID")]
  1265.     HRESULT publicId(
  1266.         [out, retval] VARIANT * publicID);
  1267.  
  1268.     //         attribute  wstring              systemId;
  1269.     [propget, id(DISPID_DOM_ENTITY_SYSTEMID),
  1270.      helpstring("the system ID")]
  1271.     HRESULT systemId(
  1272.         [out, retval] VARIANT * systemID);
  1273.  
  1274.     //         attribute  wstring              notationName;
  1275.     [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME),
  1276.      helpstring("the name of the notation")]
  1277.     HRESULT notationName(
  1278.         [out, retval] BSTR * name);
  1279. };
  1280.  
  1281.  
  1282. [
  1283.     local, object,
  1284.     uuid(2933BF8E-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMEntityReference
  1285.     odl, 
  1286.     dual,
  1287.     oleautomation,
  1288.     nonextensible,
  1289.     pointer_default(unique)
  1290. ]
  1291. interface IXMLDOMEntityReference : IXMLDOMNode 
  1292. {
  1293. };
  1294.  
  1295. [
  1296.     local, object,
  1297.     nonextensible,
  1298.     pointer_default(unique),
  1299.     odl,
  1300.     oleautomation,
  1301.     dual,
  1302.     uuid(2933BF8F-7B36-11d2-B20E-00C04F983E60) // IID_IXMLDOMImplementation
  1303. ]
  1304. interface IXMLDOMImplementation : IDispatch
  1305. {
  1306.     //  boolean                   hasFeature(in wstring feature, 
  1307.     //                                   in wstring version);
  1308.     [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)]
  1309.     HRESULT hasFeature(
  1310.         [in] BSTR feature,
  1311.         [in] BSTR version,
  1312.         [out, retval] VARIANT_BOOL * hasFeature);
  1313. };
  1314.  
  1315.  
  1316. [
  1317.     local, object,
  1318.     uuid(3efaa425-272f-11d2-836f-0000f87a7782), // IID_IXTLRuntime
  1319.     odl, 
  1320.     dual,
  1321.     oleautomation,
  1322.     nonextensible,
  1323.     helpstring("XTL runtime object"),
  1324.     pointer_default(unique)
  1325. ]
  1326. interface IXTLRuntime : IXMLDOMNode 
  1327. {
  1328.     [id(DISPID_XTLRUNTIME_UNIQUEID),
  1329.      helpstring("")] 
  1330.     HRESULT uniqueID(
  1331.         [in]IXMLDOMNode *pNode, 
  1332.         [out,retval]long *pID);
  1333.  
  1334.     [id(DISPID_XTLRUNTIME_DEPTH),
  1335.      helpstring("")]
  1336.     HRESULT depth(
  1337.         [in] IXMLDOMNode *pNode, 
  1338.         [out,retval]long * pDepth);
  1339.  
  1340.     [id(DISPID_XTLRUNTIME_CHILDNUMBER),
  1341.      helpstring("")] 
  1342.     HRESULT childNumber(
  1343.         [in]IXMLDOMNode *pNode, 
  1344.         [out,retval] long *pNumber);
  1345.  
  1346.     [id(DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER),
  1347.      helpstring("")] 
  1348.     HRESULT ancestorChildNumber(
  1349.         [in]BSTR bstrNodeName, 
  1350.         [in]IXMLDOMNode *pNode, 
  1351.         [out,retval]long *pNumber);
  1352.  
  1353.     [id(DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER),
  1354.      helpstring("")] 
  1355.     HRESULT absoluteChildNumber(
  1356.         [in]IXMLDOMNode *pNode, 
  1357.         [out,retval]long *pNumber);
  1358.  
  1359.     [id(DISPID_XTLRUNTIME_FORMATINDEX),
  1360.      helpstring("")] 
  1361.     HRESULT formatIndex(
  1362.         [in] long lIndex, 
  1363.         [in] BSTR bstrFormat, 
  1364.         [out, retval]BSTR *pbstrFormattedString);
  1365.  
  1366.     [id(DISPID_XTLRUNTIME_FORMATNUMBER),
  1367.      helpstring("")] 
  1368.     HRESULT formatNumber(
  1369.         [in] double dblNumber, 
  1370.         [in] BSTR bstrFormat, 
  1371.         [out, retval]BSTR *pbstrFormattedString);
  1372.  
  1373.     [id(DISPID_XTLRUNTIME_FORMATDATE),
  1374.      helpstring("")] 
  1375.     HRESULT formatDate(
  1376.         [in] VARIANT varDate, 
  1377.         [in] BSTR bstrFormat, 
  1378.         [in,optional] VARIANT varDestLocale,
  1379.         [out, retval]BSTR *pbstrFormattedString);
  1380.  
  1381.     [id(DISPID_XTLRUNTIME_FORMATTIME),
  1382.      helpstring("")] 
  1383.     HRESULT formatTime(
  1384.         [in] VARIANT varTime, 
  1385.         [in] BSTR bstrFormat, 
  1386.         [in,optional] VARIANT varDestLocale,
  1387.         [out, retval]BSTR *pbstrFormattedString);
  1388. };
  1389.  
  1390. [
  1391.     local, object,
  1392.     uuid(3efaa426-272f-11d2-836f-0000f87a7782), // IID_IXMLDOMParseError
  1393.     odl, 
  1394.     dual,
  1395.     oleautomation,
  1396.     nonextensible,
  1397.     helpstring("structure for reporting parser errors"),
  1398.     pointer_default(unique)
  1399. ]
  1400. interface IXMLDOMParseError : IDispatch
  1401. {
  1402.     [propget, id(DISPID_VALUE), 
  1403.      helpstring("the error code")] 
  1404.     HRESULT errorCode(
  1405.         [retval, out] long * errorCode);
  1406.  
  1407.     [propget, id(DISPID_DOM_ERROR_URL), 
  1408.      helpstring("the URL of the XML document containing the error")] 
  1409.     HRESULT url(
  1410.         [retval, out] BSTR * urlString);
  1411.  
  1412.     [propget, id(DISPID_DOM_ERROR_REASON), 
  1413.      helpstring("the cause of the error")] 
  1414.     HRESULT reason(
  1415.         [retval, out] BSTR * reasonString);
  1416.  
  1417.     [propget, id(DISPID_DOM_ERROR_SRCTEXT), 
  1418.      helpstring("the data where the error occurred")] 
  1419.     HRESULT srcText(
  1420.         [retval, out] BSTR * sourceString);
  1421.  
  1422.     [propget, id(DISPID_DOM_ERROR_LINE), 
  1423.      helpstring("the line number in the XML document where the error occurred")] 
  1424.     HRESULT line(
  1425.         [retval, out] long * lineNumber);
  1426.  
  1427.     [propget, id(DISPID_DOM_ERROR_LINEPOS),
  1428.      helpstring("the character position in the line containing the error")] 
  1429.     HRESULT linepos(
  1430.         [retval, out] long * linePosition);
  1431.  
  1432.     [propget, id(DISPID_DOM_ERROR_FILEPOS), 
  1433.      helpstring("the absolute file position in the XML document containing the error")]
  1434.     HRESULT filepos(
  1435.         [retval, out] long * filePosition);
  1436. };
  1437.  
  1438. // DOM event interface
  1439. [
  1440.     hidden,
  1441.     uuid(3efaa427-272f-11d2-836f-0000f87a7782) // IID_IXMLDOMEvent
  1442. ]
  1443. dispinterface XMLDOMDocumentEvents 
  1444. {
  1445.     properties:
  1446.     methods:
  1447.     [id (DISPID_XMLDOMEVENT_ONDATAAVAILABLE)]  
  1448.     HRESULT ondataavailable(void);
  1449.  
  1450.     [id (DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)] 
  1451.     HRESULT onreadystatechange(void);
  1452. };
  1453.  
  1454.  
  1455. [
  1456.     local, object,
  1457.     uuid(2933BF92-7B36-11d2-B20E-00C04F983E60), // IXSLProcessor
  1458.     odl, 
  1459.     dual,
  1460.     oleautomation,
  1461.     nonextensible,
  1462.     helpstring("IXSLProcessor Interface"),
  1463.     pointer_default(unique)
  1464. ]
  1465. interface IXSLProcessor : IDispatch
  1466. {
  1467.     [propput, id(DISPID_XMLDOM_PROCESSOR_INPUT), helpstring("XML input tree to transform")]
  1468.     HRESULT input([in] VARIANT var);
  1469.  
  1470.     [propget, id(DISPID_XMLDOM_PROCESSOR_INPUT), helpstring("XML input tree to transform")]
  1471.     HRESULT input([out,retval] VARIANT * pVar);
  1472.  
  1473.     [propget, id(DISPID_XMLDOM_PROCESSOR_XSLTEMPLATE), helpstring("template object used to create this processor object")]
  1474.     HRESULT ownerTemplate([out,retval] IXSLTemplate** ppTemplate);
  1475.  
  1476.     [id(DISPID_XMLDOM_PROCESSOR_SETSTARTMODE), helpstring("set XSL mode and it's namespace")]
  1477.     HRESULT setStartMode([in] BSTR mode, 
  1478.                          [in, defaultvalue("")] BSTR namespaceURI);
  1479.  
  1480.     [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODE), helpstring("starting XSL mode")]
  1481.     HRESULT startMode([out, retval] BSTR * mode);
  1482.  
  1483.     [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODEURI), helpstring("namespace of starting XSL mode")]
  1484.     HRESULT startModeURI([out, retval] BSTR * namespaceURI);
  1485.  
  1486.     [propput, id(DISPID_XMLDOM_PROCESSOR_OUTPUT), helpstring("custom stream object for transform output")]
  1487.     HRESULT output([in] VARIANT output);
  1488.  
  1489.     [propget, id(DISPID_XMLDOM_PROCESSOR_OUTPUT), helpstring("transform output")]
  1490.     HRESULT output([out, retval] VARIANT* pOutput);
  1491.  
  1492.     [id(DISPID_XMLDOM_PROCESSOR_TRANSFORM), helpstring("start/resume the XSL transformation process")]
  1493.     HRESULT transform([out,retval] VARIANT_BOOL* pDone);
  1494.  
  1495.     [id(DISPID_XMLDOM_PROCESSOR_RESET), helpstring("reset state of processor and abort current transform")]
  1496.     HRESULT reset();
  1497.  
  1498.     [propget, id(DISPID_XMLDOM_PROCESSOR_READYSTATE), helpstring("current state of the processor")]
  1499.     HRESULT readyState([out, retval] long* pReadyState);
  1500.  
  1501.     [id(DISPID_XMLDOM_PROCESSOR_ADDPARAMETER), helpstring("set <xsl:param> values")]
  1502.     HRESULT addParameter([in] BSTR baseName, 
  1503.                      [in] VARIANT parameter, 
  1504.                      [in, defaultvalue("")] BSTR namespaceURI);
  1505.  
  1506.     [id(DISPID_XMLDOM_PROCESSOR_ADDOBJECT), helpstring("pass object to stylesheet")]
  1507.     HRESULT addObject([in] IDispatch* obj, 
  1508.                   [in] BSTR namespaceURI);
  1509.  
  1510.     [propget, id(DISPID_XMLDOM_PROCESSOR_STYLESHEET), helpstring("current stylesheet being used")]
  1511.     HRESULT stylesheet([out,retval] IXMLDOMNode** stylesheet);
  1512. }; 
  1513.  
  1514.  
  1515. [
  1516.     local, object,
  1517.     uuid(2933BF93-7B36-11d2-B20E-00C04F983E60), // IID_IXSLTemplate
  1518.     odl, 
  1519.     dual,
  1520.     oleautomation,
  1521.     nonextensible,
  1522.     helpstring("IXSLTemplate Interface"),
  1523.     pointer_default(unique)
  1524. ]
  1525. interface IXSLTemplate : IDispatch
  1526. {
  1527.     [propputref, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET), helpstring("stylesheet to use with processors")]
  1528.     HRESULT stylesheet([in] IXMLDOMNode* stylesheet);
  1529.  
  1530.     [propget, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET), helpstring("stylesheet to use with processors")]
  1531.     HRESULT stylesheet([out, retval] IXMLDOMNode** stylesheet);
  1532.  
  1533.     [id(DISPID_XMLDOM_TEMPLATE_CREATEPROCESSOR), helpstring("create a new processor object")]
  1534.     HRESULT createProcessor([out, retval] IXSLProcessor** ppProcessor);
  1535. }; 
  1536.  
  1537.  
  1538. [
  1539.     local, object,
  1540.     uuid(310afa62-0575-11d2-9ca9-0060b0ec3d39),
  1541.     odl,
  1542.     dual,
  1543.     oleautomation,
  1544.     nonextensible,
  1545.     hidden, // Because that this is the default interface of coclass DSOControl
  1546.     helpstring("DSO Control"),
  1547.     pointer_default(unique)
  1548. ]
  1549. interface IDSOControl : IDispatch
  1550. {
  1551.     [propget,id(DISPID_XMLDSO_DOCUMENT)] 
  1552.         HRESULT XMLDocument([out, retval] IXMLDOMDocument** ppDoc);
  1553.     [propput,id(DISPID_XMLDSO_DOCUMENT)] 
  1554.         HRESULT XMLDocument([in] IXMLDOMDocument* ppDoc);
  1555.  
  1556.     [propget,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)] 
  1557.         HRESULT JavaDSOCompatible([out, retval] BOOL* fJavaDSOCompatible);
  1558.     [propput,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)] 
  1559.         HRESULT JavaDSOCompatible([in]  BOOL fJavaDSOCompatible);
  1560.  
  1561.     [propget, id(DISPID_READYSTATE)] 
  1562.         HRESULT readyState([out, retval] long *state);
  1563. };
  1564.  
  1565.  
  1566. [
  1567.     object,
  1568.     uuid(ED8C108D-4349-11D2-91A4-00C04F7969E8),
  1569.     odl,
  1570.     dual,
  1571.     oleautomation,
  1572.     helpstring("IXMLHTTPRequest Interface"),
  1573.     pointer_default(unique)
  1574. ]
  1575. interface IXMLHTTPRequest : IDispatch
  1576. {
  1577.     [id(1), helpstring("Open HTTP connection")] HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, [in,optional] VARIANT varAsync, [in,optional] VARIANT bstrUser, [in,optional] VARIANT bstrPassword);
  1578.     [id(2), helpstring("Add HTTP request header")] HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue);
  1579.     [id(3), helpstring("Get HTTP response header")] HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR * pbstrValue);
  1580.     [id(4), helpstring("Get all HTTP response headers")] HRESULT getAllResponseHeaders([out, retval] BSTR * pbstrHeaders);
  1581.     [id(5), helpstring("Send HTTP request")] HRESULT send([in, optional] VARIANT varBody);
  1582.     [id(6), helpstring("Abort HTTP request")] HRESULT abort();
  1583.     [propget, id(7),  helpstring("Get HTTP status code")] HRESULT status([out, retval] long * plStatus);
  1584.     [propget, id(8),  helpstring("Get HTTP status text")] HRESULT statusText([out, retval] BSTR * pbstrStatus);
  1585.     [propget, id(9),  helpstring("Get response body")] HRESULT responseXML([out, retval] IDispatch ** ppBody);
  1586.     [propget, id(10),  helpstring("Get response body")] HRESULT responseText([out, retval] BSTR * pbstrBody);
  1587.     [propget, id(11), helpstring("Get response body")] HRESULT responseBody([out, retval] VARIANT * pvarBody);
  1588.     [propget, id(12), helpstring("Get response body")] HRESULT responseStream([out, retval] VARIANT * pvarBody);
  1589.     [propget, id(13), helpstring("Get ready state")] HRESULT readyState([out, retval] long * plState);
  1590.     [propput, id(14), helpstring("Register a complete event handler")] HRESULT onreadystatechange([in] IDispatch * pReadyStateSink);
  1591. };
  1592.  
  1593.  
  1594. typedef [
  1595.     helpstring("Options for ServerXMLHTTPRequest Option property")
  1596. ]
  1597. enum _SERVERXMLHTTP_OPTION
  1598. {
  1599.     SXH_OPTION_URL = -1,
  1600.     SXH_OPTION_URL_CODEPAGE,
  1601.     SXH_OPTION_ESCAPE_PERCENT_IN_URL,
  1602.     SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS,
  1603.     SXH_OPTION_SELECT_CLIENT_SSL_CERT
  1604. } SERVERXMLHTTP_OPTION;
  1605.  
  1606.  
  1607. typedef [
  1608.     helpstring("Flags for SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS option")
  1609. ]
  1610. enum _SXH_SERVER_CERT_OPTION
  1611. {
  1612.     SXH_SERVER_CERT_IGNORE_UNKNOWN_CA        = 0x00000100,
  1613.     SXH_SERVER_CERT_IGNORE_WRONG_USAGE       = 0x00000200,
  1614.     SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID   = 0x00001000,
  1615.     SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID = 0x00002000,
  1616.     SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = (SXH_SERVER_CERT_IGNORE_UNKNOWN_CA
  1617.                                               + SXH_SERVER_CERT_IGNORE_WRONG_USAGE
  1618.                                               + SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID
  1619.                                               + SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID)
  1620. } SXH_SERVER_CERT_OPTION;
  1621.  
  1622.  
  1623.  
  1624. [
  1625.     object,
  1626.     uuid(2e9196bf-13ba-4dd4-91ca-6c571f281495),
  1627.     odl,
  1628.     dual,
  1629.     oleautomation,
  1630.     helpstring("IServerXMLHTTPRequest Interface"),
  1631.     pointer_default(unique)
  1632. ]
  1633. interface IServerXMLHTTPRequest : IXMLHTTPRequest
  1634. {
  1635.     [id(15), helpstring("Specify timeout settings (in milliseconds)")]
  1636.     HRESULT setTimeouts([in] long resolveTimeout, [in] long connectTimeout, [in] long sendTimeout, [in] long receiveTimeout);
  1637.  
  1638.     [id(16), helpstring("Wait for asynchronous send to complete, with optional timeout (in seconds)")]
  1639.     HRESULT waitForResponse([in, optional] VARIANT timeoutInSeconds, [out, retval] VARIANT_BOOL * isSuccessful);
  1640.  
  1641.     [id(17), helpstring("Get an option value")]
  1642.     HRESULT getOption([in] SERVERXMLHTTP_OPTION option, [out, retval] VARIANT * value);
  1643.  
  1644.     [id(18), helpstring("Set an option value")]
  1645.     HRESULT setOption([in] SERVERXMLHTTP_OPTION option, [in] VARIANT value);
  1646. };
  1647.  
  1648.  
  1649. typedef [
  1650.     helpstring("Settings for setProxy")
  1651. ]
  1652. enum _SXH_PROXY_SETTING
  1653. {
  1654.     SXH_PROXY_SET_DEFAULT   = 0x00000000,
  1655.     SXH_PROXY_SET_PRECONFIG = 0x00000000,
  1656.     SXH_PROXY_SET_DIRECT    = 0x00000001,
  1657.     SXH_PROXY_SET_PROXY     = 0x00000002
  1658. } SXH_PROXY_SETTING;
  1659.  
  1660.  
  1661. [
  1662.     object,
  1663.     uuid(2e01311b-c322-4b0a-bd77-b90cfdc8dce7),
  1664.     odl,
  1665.     dual,
  1666.     oleautomation,
  1667.     helpstring("IServerXMLHTTPRequest2 Interface"),
  1668.     pointer_default(unique)
  1669. ]
  1670. interface IServerXMLHTTPRequest2 : IServerXMLHTTPRequest
  1671. {
  1672.     [id(19), helpstring("Specify proxy configuration")]
  1673.     HRESULT setProxy(
  1674.                 [in] SXH_PROXY_SETTING proxySetting,
  1675.                 [in, optional] VARIANT varProxyServer,
  1676.                 [in, optional] VARIANT varBypassList);
  1677.  
  1678.     [id(20), helpstring("Specify proxy authentication credentials")]
  1679.     HRESULT setProxyCredentials(
  1680.                 [in] BSTR bstrUserName,
  1681.                 [in] BSTR bstrPassword);
  1682. };
  1683.  
  1684. //+-----------------------------------------------------------------------------
  1685. // 
  1686. // SAX interfaces
  1687. // 
  1688. //------------------------------------------------------------------------------
  1689.  
  1690. [
  1691.     hidden, 
  1692.     object,
  1693.     local,
  1694.     uuid(a4f96ed0-f829-476e-81c0-cdc7bd2a0802), // IID_ISAXXMLReader
  1695.     helpstring("ISAXXMLReader interface"),
  1696.     pointer_default(unique)
  1697. ]
  1698. interface ISAXXMLReader : IUnknown
  1699. {
  1700.     HRESULT getFeature( 
  1701.         [in] const wchar_t * pwchName, 
  1702.         [out, retval] VARIANT_BOOL * pvfValue);
  1703.     HRESULT putFeature(
  1704.         [in] const wchar_t * pwchName, 
  1705.         [in] VARIANT_BOOL vfValue);
  1706.  
  1707.     HRESULT getProperty(
  1708.         [in] const wchar_t * pwchName,
  1709.         [out, retval] VARIANT * pvarValue);
  1710.     HRESULT putProperty(
  1711.         [in] const wchar_t * pwchName,
  1712.         [in] VARIANT varValue);
  1713.  
  1714.     HRESULT getEntityResolver(
  1715.         [out, retval] ISAXEntityResolver ** ppResolver);
  1716.     HRESULT putEntityResolver(
  1717.         [in] ISAXEntityResolver * pResolver);
  1718.  
  1719.     HRESULT getContentHandler(
  1720.         [out, retval] ISAXContentHandler ** ppHandler);
  1721.     HRESULT putContentHandler(
  1722.         [in] ISAXContentHandler * pHandler);
  1723.  
  1724.     HRESULT getDTDHandler(
  1725.         [out, retval] ISAXDTDHandler ** ppHandler);
  1726.     HRESULT putDTDHandler(
  1727.         [in] ISAXDTDHandler * pHandler);
  1728.  
  1729.     HRESULT getErrorHandler(
  1730.         [out, retval] ISAXErrorHandler ** ppHandler);
  1731.     HRESULT putErrorHandler(
  1732.         [in] ISAXErrorHandler * pHandler);
  1733.  
  1734.     HRESULT getBaseURL(
  1735.         [out, retval] const wchar_t ** ppwchBaseUrl);
  1736.     HRESULT putBaseURL(
  1737.         [in] const wchar_t * pwchBaseUrl);
  1738.  
  1739.     HRESULT getSecureBaseURL(
  1740.         [out, retval] const wchar_t ** ppwchSecureBaseUrl);
  1741.     HRESULT putSecureBaseURL(
  1742.         [in] const wchar_t * pwchSecureBaseUrl);
  1743.  
  1744.     HRESULT parse(
  1745.         [in] VARIANT varInput);
  1746.     HRESULT parseURL(
  1747.         [in] const wchar_t * pwchUrl);
  1748. };
  1749.  
  1750. [
  1751.     hidden, 
  1752.     object,
  1753.     local,
  1754.     uuid(70409222-ca09-4475-acb8-40312fe8d145), // IID_ISAXXMLFilter
  1755.     helpstring("ISAXXMLFilter interface"),
  1756.     pointer_default(unique)
  1757. ]
  1758. interface ISAXXMLFilter : ISAXXMLReader
  1759. {
  1760.     HRESULT getParent(
  1761.         [out, retval] ISAXXMLReader ** ppReader);
  1762.     HRESULT putParent(
  1763.         [in] ISAXXMLReader * pReader);
  1764. };
  1765.  
  1766. [
  1767.     hidden, 
  1768.     object,
  1769.     local,
  1770.     uuid(9b7e472a-0de4-4640-bff3-84d38a051c31), // IID_ISAXLocator
  1771.     helpstring("ISAXLocator interface"),
  1772.     pointer_default(unique)
  1773. ]
  1774. interface ISAXLocator : IUnknown
  1775. {   
  1776.     HRESULT getColumnNumber(
  1777.         [out, retval] int * pnColumn);
  1778.  
  1779.     HRESULT getLineNumber(
  1780.         [out, retval] int * pnLine);
  1781.  
  1782.     HRESULT getPublicId(
  1783.         [out, retval] const wchar_t ** ppwchPublicId);
  1784.  
  1785.     HRESULT getSystemId(
  1786.         [out, retval] const wchar_t ** ppwchSystemId);
  1787. };
  1788.  
  1789. [
  1790.     hidden, 
  1791.     object,
  1792.     local,
  1793.     uuid(99bca7bd-e8c4-4d5f-a0cf-6d907901ff07), // IID_ISAXEntityResolver
  1794.     helpstring("ISAXEntityResolver interface"),
  1795.     pointer_default(unique)
  1796. ]
  1797. interface ISAXEntityResolver : IUnknown
  1798. {   
  1799.     HRESULT resolveEntity(
  1800.         [in] const wchar_t * pwchPublicId,
  1801.         [in] const wchar_t * pwchSystemId,
  1802.         [out, retval] VARIANT * pvarInput);
  1803. };
  1804.  
  1805. [
  1806.     hidden, 
  1807.     object,
  1808.     local,
  1809.     uuid(1545cdfa-9e4e-4497-a8a4-2bf7d0112c44), // IID_ISAXContentHandler
  1810.     helpstring("ISAXContentHandler interface"),
  1811.     pointer_default(unique)
  1812. ]
  1813. interface ISAXContentHandler : IUnknown
  1814. {
  1815.     HRESULT putDocumentLocator(
  1816.         [in] ISAXLocator * pLocator);
  1817.  
  1818.     HRESULT startDocument();
  1819.  
  1820.     HRESULT endDocument();
  1821.  
  1822.     HRESULT startPrefixMapping(
  1823.         [in] const wchar_t * pwchPrefix,
  1824.         [in] int cchPrefix,
  1825.         [in] const wchar_t * pwchUri,
  1826.         [in] int cchUri);
  1827.  
  1828.     HRESULT endPrefixMapping(
  1829.         [in] const wchar_t * pwchPrefix,
  1830.         [in] int cchPrefix);
  1831.  
  1832.     HRESULT startElement(
  1833.         [in] const wchar_t * pwchNamespaceUri, 
  1834.         [in] int cchNamespaceUri, 
  1835.         [in] const wchar_t * pwchLocalName, 
  1836.         [in] int cchLocalName, 
  1837.         [in] const wchar_t * pwchQName, 
  1838.         [in] int cchQName, 
  1839.         [in] ISAXAttributes * pAttributes);
  1840.  
  1841.     HRESULT endElement(
  1842.         [in] const wchar_t * pwchNamespaceUri, 
  1843.         [in] int cchNamespaceUri, 
  1844.         [in] const wchar_t * pwchLocalName, 
  1845.         [in] int cchLocalName, 
  1846.         [in] const wchar_t * pwchQName, 
  1847.         [in] int cchQName);
  1848.  
  1849.     HRESULT characters(
  1850.         [in] const wchar_t * pwchChars, 
  1851.         [in] int cchChars);
  1852.  
  1853.     HRESULT ignorableWhitespace(
  1854.         [in] const wchar_t * pwchChars, 
  1855.         [in] int cchChars);
  1856.  
  1857.     HRESULT processingInstruction(
  1858.         [in] const wchar_t * pwchTarget, 
  1859.         [in] int cchTarget,
  1860.         [in] const wchar_t * pwchData, 
  1861.         [in] int cchData);
  1862.  
  1863.     HRESULT skippedEntity(
  1864.         [in] const wchar_t * pwchName, 
  1865.         [in] int cchName);
  1866. };
  1867.  
  1868. [
  1869.     hidden, 
  1870.     object,
  1871.     local,
  1872.     uuid(e15c1baf-afb3-4d60-8c36-19a8c45defed), // IID_ISAXDTDHandler
  1873.     helpstring("ISAXDTDHandler interface"),
  1874.     pointer_default(unique)
  1875. ]
  1876. interface ISAXDTDHandler : IUnknown
  1877. {   
  1878.     HRESULT notationDecl(
  1879.         [in] const wchar_t * pwchName,
  1880.         [in] int cchName,
  1881.         [in] const wchar_t * pwchPublicId,
  1882.         [in] int cchPublicId,
  1883.         [in] const wchar_t * pwchSystemId,
  1884.         [in] int cchSystemId);
  1885.  
  1886.     HRESULT unparsedEntityDecl(
  1887.         [in] const wchar_t * pwchName,
  1888.         [in] int cchName,
  1889.         [in] const wchar_t * pwchPublicId,
  1890.         [in] int cchPublicId,
  1891.         [in] const wchar_t * pwchSystemId,
  1892.         [in] int cchSystemId,
  1893.         [in] const wchar_t * pwchNotationName,
  1894.         [in] int cchNotationName);
  1895. };
  1896.  
  1897. [
  1898.     hidden, 
  1899.     object,
  1900.     local,
  1901.     uuid(a60511c4-ccf5-479e-98a3-dc8dc545b7d0), // IID_ISAXErrorHandler
  1902.     helpstring("ISAXErrorHandler interface"),
  1903.     pointer_default(unique)
  1904. ]
  1905. interface ISAXErrorHandler : IUnknown
  1906. {   
  1907.     HRESULT error(
  1908.         [in] ISAXLocator * pLocator, 
  1909.         [in] const wchar_t * pwchErrorMessage,
  1910.         [in] HRESULT hrErrorCode);
  1911.  
  1912.     HRESULT fatalError(
  1913.         [in] ISAXLocator * pLocator, 
  1914.         [in] const wchar_t * pwchErrorMessage,
  1915.         [in] HRESULT hrErrorCode);
  1916.  
  1917.     HRESULT ignorableWarning( 
  1918.         [in] ISAXLocator * pLocator, 
  1919.         [in] const wchar_t * pwchErrorMessage, 
  1920.         [in] HRESULT hrErrorCode);
  1921. };
  1922.  
  1923. [
  1924.     hidden, 
  1925.     object,
  1926.     local,
  1927.     uuid(7f85d5f5-47a8-4497-bda5-84ba04819ea6), // IID_ISAXLexicalHandler
  1928.     helpstring("ISAXLexicalHandler interface"),
  1929.     pointer_default(unique)
  1930. ]
  1931. interface ISAXLexicalHandler : IUnknown 
  1932. {
  1933.     HRESULT startDTD(
  1934.         [in] const wchar_t * pwchName,
  1935.         [in] int cchName,
  1936.         [in] const wchar_t * pwchPublicId,
  1937.         [in] int cchPublicId,
  1938.         [in] const wchar_t * pwchSystemId,
  1939.         [in] int cchSystemId);
  1940.  
  1941.     HRESULT endDTD();
  1942.     
  1943.     HRESULT startEntity(
  1944.         [in] const wchar_t * pwchName,
  1945.         [in] int cchName);
  1946.  
  1947.     HRESULT endEntity(
  1948.         [in] const wchar_t * pwchName,
  1949.         [in] int cchName);
  1950.     
  1951.     HRESULT startCDATA();
  1952.  
  1953.     HRESULT endCDATA();
  1954.     
  1955.     HRESULT comment(
  1956.         [in] const wchar_t * pwchChars, 
  1957.         [in] int cchChars);
  1958. };
  1959.  
  1960. [
  1961.     hidden, 
  1962.     object,
  1963.     local,
  1964.     uuid(862629ac-771a-47b2-8337-4e6843c1be90), // IID_ISAXDeclHandler
  1965.     helpstring("ISAXDeclHandler interface"),
  1966.     pointer_default(unique)
  1967. ]
  1968. interface ISAXDeclHandler : IUnknown 
  1969. {
  1970.     HRESULT elementDecl(
  1971.         [in] const wchar_t * pwchName,
  1972.         [in] int cchName,
  1973.         [in] const wchar_t * pwchModel,
  1974.         [in] int cchModel);
  1975.     
  1976.     HRESULT attributeDecl(
  1977.         [in] const wchar_t * pwchElementName,
  1978.         [in] int cchElementName,
  1979.         [in] const wchar_t * pwchAttributeName,
  1980.         [in] int cchAttributeName,
  1981.         [in] const wchar_t * pwchType,
  1982.         [in] int cchType,
  1983.         [in] const wchar_t * pwchValueDefault,
  1984.         [in] int cchValueDefault,
  1985.         [in] const wchar_t * pwchValue,
  1986.         [in] int cchValue);
  1987.     
  1988.     HRESULT internalEntityDecl(
  1989.         [in] const wchar_t * pwchName,
  1990.         [in] int cchName,
  1991.         [in] const wchar_t * pwchValue,
  1992.         [in] int cchValue);
  1993.  
  1994.     HRESULT externalEntityDecl(
  1995.         [in] const wchar_t * pwchName,
  1996.         [in] int cchName,
  1997.         [in] const wchar_t * pwchPublicId,
  1998.         [in] int cchPublicId,
  1999.         [in] const wchar_t * pwchSystemId,
  2000.         [in] int cchSystemId);
  2001. };
  2002.  
  2003. [
  2004.     hidden, 
  2005.     object,
  2006.     local,
  2007.     uuid(f078abe1-45d2-4832-91ea-4466ce2f25c9), // IID_ISAXAttributes
  2008.     helpstring("ISAXAttributes interface"),
  2009.     pointer_default(unique)
  2010. ]
  2011. interface ISAXAttributes : IUnknown
  2012. {   
  2013.     HRESULT getLength(
  2014.         [out, retval] int * pnLength);
  2015.  
  2016.     HRESULT getURI(
  2017.         [in] int nIndex,
  2018.         [out] const wchar_t ** ppwchUri,
  2019.         [out] int * pcchUri);
  2020.  
  2021.     HRESULT getLocalName(
  2022.         [in] int nIndex,
  2023.         [out] const wchar_t ** ppwchLocalName,
  2024.         [out] int * pcchLocalName);
  2025.  
  2026.     HRESULT getQName(
  2027.         [in] int nIndex,
  2028.         [out] const wchar_t ** ppwchQName,
  2029.         [out] int * pcchQName);
  2030.  
  2031.     HRESULT getName(
  2032.         [in] int nIndex,
  2033.         [out] const wchar_t ** ppwchUri,
  2034.         [out] int * pcchUri,
  2035.         [out] const wchar_t ** ppwchLocalName,
  2036.         [out] int * pcchLocalName,
  2037.         [out] const wchar_t ** ppwchQName,
  2038.         [out] int * pcchQName);
  2039.  
  2040.     HRESULT getIndexFromName(
  2041.         [in] const wchar_t * pwchUri,
  2042.         [in] int cchUri,
  2043.         [in] const wchar_t * pwchLocalName,
  2044.         [in] int cchLocalName,
  2045.         [out, retval] int * pnIndex);
  2046.  
  2047.     HRESULT getIndexFromQName(
  2048.         [in] const wchar_t * pwchQName,
  2049.         [in] int cchQName,
  2050.         [out, retval] int * pnIndex);
  2051.  
  2052.     HRESULT getType(
  2053.         [in] int nIndex,
  2054.         [out] const wchar_t ** ppwchType,
  2055.         [out] int * pcchType);
  2056.  
  2057.     HRESULT getTypeFromName(
  2058.         [in] const wchar_t * pwchUri,
  2059.         [in] int cchUri,
  2060.         [in] const wchar_t * pwchLocalName,
  2061.         [in] int cchLocalName,
  2062.         [out] const wchar_t ** ppwchType,
  2063.         [out] int * pcchType);
  2064.  
  2065.     HRESULT getTypeFromQName(
  2066.         [in] const wchar_t * pwchQName,
  2067.         [in] int cchQName,
  2068.         [out] const wchar_t ** ppwchType,
  2069.         [out] int * pcchType);
  2070.  
  2071.     HRESULT getValue(
  2072.         [in] int nIndex,
  2073.         [out] const wchar_t ** ppwchValue,
  2074.         [out] int * pcchValue);
  2075.  
  2076.     HRESULT getValueFromName(
  2077.         [in] const wchar_t * pwchUri,
  2078.         [in] int cchUri,
  2079.         [in] const wchar_t * pwchLocalName,
  2080.         [in] int cchLocalName,
  2081.         [out] const wchar_t ** ppwchValue,
  2082.         [out] int * pcchValue);
  2083.  
  2084.     HRESULT getValueFromQName(
  2085.         [in] const wchar_t * pwchQName,
  2086.         [in] int cchQName,
  2087.         [out] const wchar_t ** ppwchValue,
  2088.         [out] int * pcchValue);
  2089. };
  2090.  
  2091. //+-----------------------------------------------------------------------------
  2092. // 
  2093. // SAX dispatch interfaces
  2094. // 
  2095. //------------------------------------------------------------------------------
  2096.  
  2097. [
  2098.     object,
  2099.     local,
  2100.     odl, 
  2101.     dual,
  2102.     oleautomation,
  2103.     nonextensible,
  2104.     uuid(8c033caa-6cd6-4f73-b728-4531af74945f), // IID_IVBSAXXMLReader
  2105.     helpstring("IVBSAXXMLReader interface"),
  2106.     pointer_default(unique)
  2107. ]
  2108. interface IVBSAXXMLReader : IDispatch
  2109. {
  2110.     [id(DISPID_SAX_XMLREADER_GETFEATURE), helpstring("Look up the value of a feature.")]
  2111.     HRESULT getFeature( 
  2112.         [in] BSTR strName, 
  2113.         [out, retval] VARIANT_BOOL * fValue);
  2114.     [id(DISPID_SAX_XMLREADER_PUTFEATURE), helpstring("Set the state of a feature.")]
  2115.     HRESULT putFeature(
  2116.         [in] BSTR strName, 
  2117.         [in] VARIANT_BOOL fValue);
  2118.  
  2119.     [id(DISPID_SAX_XMLREADER_GETPROPERTY), helpstring("Look up the value of a property.")]
  2120.     HRESULT getProperty(
  2121.         [in] BSTR strName,
  2122.         [out, retval] VARIANT * varValue);
  2123.     [id(DISPID_SAX_XMLREADER_PUTPROPERTY), helpstring("Set the value of a property.")]
  2124.     HRESULT putProperty(
  2125.         [in] BSTR strName,
  2126.         [in] VARIANT varValue);
  2127.  
  2128.     [propget, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER), helpstring("Allow an application to register an entity resolver or look up the current entity resolver.")]
  2129.     HRESULT entityResolver(
  2130.         [out, retval] IVBSAXEntityResolver ** oResolver);
  2131.     [propputref, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER), helpstring("Allow an application to register an entity resolver or look up the current entity resolver.")]
  2132.     HRESULT entityResolver(
  2133.         [in] IVBSAXEntityResolver * oResolver);
  2134.  
  2135.     [propget, id(DISPID_SAX_XMLREADER_CONTENTHANDLER), helpstring("Allow an application to register a content event handler or look up the current content event handler.")]
  2136.     HRESULT contentHandler(
  2137.         [out, retval] IVBSAXContentHandler ** oHandler);
  2138.     [propputref, id(DISPID_SAX_XMLREADER_CONTENTHANDLER), helpstring("Allow an application to register a content event handler or look up the current content event handler")]
  2139.     HRESULT contentHandler(
  2140.         [in] IVBSAXContentHandler * oHandler);
  2141.  
  2142.     [propget, id(DISPID_SAX_XMLREADER_DTDHANDLER), helpstring("Allow an application to register a DTD event handler or look up the current DTD event handler.")]
  2143.     HRESULT dtdHandler(
  2144.         [out, retval] IVBSAXDTDHandler ** oHandler);
  2145.     [propputref, id(DISPID_SAX_XMLREADER_DTDHANDLER), helpstring("Allow an application to register a DTD event handler or look up the current DTD event handler.")]
  2146.     HRESULT dtdHandler(
  2147.         [in] IVBSAXDTDHandler * oHandler);
  2148.  
  2149.     [propget, id(DISPID_SAX_XMLREADER_ERRORHANDLER), helpstring("Allow an application to register an error event handler or look up the current error event handler.")]
  2150.     HRESULT errorHandler(
  2151.         [out, retval] IVBSAXErrorHandler ** oHandler);
  2152.     [propputref, id(DISPID_SAX_XMLREADER_ERRORHANDLER), helpstring("Allow an application to register an error event handler or look up the current error event handler.")]
  2153.     HRESULT errorHandler(
  2154.         [in] IVBSAXErrorHandler * oHandler);
  2155.  
  2156.     [propget, id(DISPID_SAX_XMLREADER_BASEURL), helpstring("Set or get the base URL for the document.")]
  2157.     HRESULT baseURL(
  2158.         [out, retval] BSTR * strBaseURL);
  2159.     [propput, id(DISPID_SAX_XMLREADER_BASEURL), helpstring("Set or get the base URL for the document.")]
  2160.     HRESULT baseURL(
  2161.         [in] BSTR strBaseURL);
  2162.  
  2163.     [propget, id(DISPID_SAX_XMLREADER_SECUREBASEURL), helpstring("Set or get the secure base URL for the document.")]
  2164.     HRESULT secureBaseURL(
  2165.         [out, retval] BSTR * strSecureBaseURL);
  2166.     [propput, id(DISPID_SAX_XMLREADER_SECUREBASEURL), helpstring("Set or get the secure base URL for the document.")]
  2167.     HRESULT secureBaseURL(
  2168.         [in] BSTR strSecureBaseURL);
  2169.  
  2170.     [id(DISPID_SAX_XMLREADER_PARSE), helpstring("Parse an XML document.")]
  2171.     HRESULT parse(
  2172.         [in] VARIANT varInput);
  2173.     [id(DISPID_SAX_XMLREADER_PARSEURL), helpstring("Parse an XML document from a system identifier (URI).")]
  2174.     HRESULT parseURL(
  2175.         [in] BSTR strURL);
  2176. };
  2177.  
  2178. [
  2179.     object,
  2180.     local,
  2181.     odl, 
  2182.     dual,
  2183.     oleautomation,
  2184.     nonextensible,
  2185.     uuid(1299eb1b-5b88-433e-82de-82ca75ad4e04), // IID_IVBSAXXMLFilter
  2186.     helpstring("IVBSAXXMLFilter interface"),
  2187.     pointer_default(unique)
  2188. ]
  2189. interface IVBSAXXMLFilter : IDispatch
  2190. {
  2191.     [propget, id(DISPID_SAX_XMLFILTER_PARENT), helpstring("Set or get the parent reader")]
  2192.     HRESULT parent(
  2193.         [out, retval] IVBSAXXMLReader ** oReader);
  2194.     [propputref, id(DISPID_SAX_XMLFILTER_PARENT), helpstring("Set or get the parent reader")]
  2195.     HRESULT parent(
  2196.         [in] IVBSAXXMLReader * oReader);
  2197.  
  2198. };
  2199.  
  2200. [
  2201.     object,
  2202.     local,
  2203.     odl, 
  2204.     dual,
  2205.     oleautomation,
  2206.     nonextensible,
  2207.     uuid(796e7ac5-5aa2-4eff-acad-3faaf01a3288), // IID_IVBSAXLocator
  2208.     helpstring("IVBSAXLocator interface"),
  2209.     pointer_default(unique)
  2210. ]
  2211. interface IVBSAXLocator : IDispatch
  2212. {   
  2213.     [propget, id(DISPID_SAX_LOCATOR_COLUMNNUMBER), helpstring("Get the column number where the current document event ends.")]
  2214.     HRESULT columnNumber(
  2215.         [out, retval] int * nColumn);
  2216.  
  2217.     [propget, id(DISPID_SAX_LOCATOR_LINENUMBER), helpstring("Get the line number where the current document event ends.")]
  2218.     HRESULT lineNumber(
  2219.         [out, retval] int * nLine);
  2220.  
  2221.     [propget, id(DISPID_SAX_LOCATOR_PUBLICID), helpstring("Get the public identifier for the current document event.")]
  2222.     HRESULT publicId(
  2223.         [out, retval] BSTR * strPublicId);
  2224.  
  2225.     [propget, id(DISPID_SAX_LOCATOR_SYSTEMID), helpstring("Get the system identifier for the current document event.")]
  2226.     HRESULT systemId(
  2227.         [out, retval] BSTR * strSystemId);
  2228. };
  2229.  
  2230. [
  2231.     object,
  2232.     local,
  2233.     odl, 
  2234.     dual,
  2235.     oleautomation,
  2236.     nonextensible,
  2237.     uuid(0c05d096-f45b-4aca-ad1a-aa0bc25518dc), // IID_IVBSAXEntityResolver
  2238.     helpstring("IVBSAXEntityResolver interface"),
  2239.     pointer_default(unique)
  2240. ]
  2241. interface IVBSAXEntityResolver : IDispatch
  2242. {   
  2243.     [id(DISPID_SAX_ENTITYRESOLVER_RESOLVEENTITY), helpstring("Allow the application to resolve external entities.")]
  2244.     HRESULT resolveEntity(
  2245.         [in, out] BSTR * strPublicId,
  2246.         [in, out] BSTR * strSystemId,
  2247.         [out, retval] VARIANT * varInput);
  2248. };
  2249.  
  2250. [
  2251.     object,
  2252.     local,
  2253.     odl, 
  2254.     dual,
  2255.     oleautomation,
  2256.     nonextensible,
  2257.     uuid(2ed7290a-4dd5-4b46-bb26-4e4155e77faa), // IID_IVBSAXContentHandler
  2258.     helpstring("IVBSAXContentHandler interface"),
  2259.     pointer_default(unique)
  2260. ]
  2261. interface IVBSAXContentHandler : IDispatch
  2262. {
  2263.     [propputref, id(DISPID_SAX_CONTENTHANDLER_DOCUMENTLOCATOR), helpstring("Receive an object for locating the origin of SAX document events.")]
  2264.     HRESULT documentLocator(
  2265.         [in] IVBSAXLocator * oLocator);
  2266.  
  2267.     [id(DISPID_SAX_CONTENTHANDLER_STARTDOCUMENT), helpstring("Receive notification of the beginning of a document.")]
  2268.     HRESULT startDocument();
  2269.  
  2270.     [id(DISPID_SAX_CONTENTHANDLER_ENDDOCUMENT), helpstring("Receive notification of the end of a document.")]
  2271.     HRESULT endDocument();
  2272.  
  2273.     [id(DISPID_SAX_CONTENTHANDLER_STARTPREFIXMAPPING), helpstring("Begin the scope of a prefix-URI Namespace mapping.")]
  2274.     HRESULT startPrefixMapping(
  2275.         [in, out] BSTR * strPrefix,
  2276.         [in, out] BSTR * strURI);
  2277.  
  2278.     [id(DISPID_SAX_CONTENTHANDLER_ENDPREFIXMAPPING), helpstring("End the scope of a prefix-URI mapping.")]
  2279.     HRESULT endPrefixMapping(
  2280.         [in, out] BSTR * strPrefix);
  2281.  
  2282.     [id(DISPID_SAX_CONTENTHANDLER_STARTELEMENT), helpstring("Receive notification of the beginning of an element.")]
  2283.     HRESULT startElement(
  2284.         [in, out] BSTR * strNamespaceURI, 
  2285.         [in, out] BSTR * strLocalName,
  2286.         [in, out] BSTR * strQName,
  2287.         [in] IVBSAXAttributes * oAttributes);
  2288.  
  2289.     [id(DISPID_SAX_CONTENTHANDLER_ENDELEMENT), helpstring("Receive notification of the end of an element.")]
  2290.     HRESULT endElement(
  2291.         [in, out] BSTR * strNamespaceURI,
  2292.         [in, out] BSTR * strLocalName,
  2293.         [in, out] BSTR * strQName);
  2294.  
  2295.     [id(DISPID_SAX_CONTENTHANDLER_CHARACTERS), helpstring("Receive notification of character data.")]
  2296.     HRESULT characters(
  2297.         [in, out] BSTR * strChars);
  2298.  
  2299.     [id(DISPID_SAX_CONTENTHANDLER_IGNORABLEWHITESPACE), helpstring("Receive notification of ignorable whitespace in element content.")]
  2300.     HRESULT ignorableWhitespace(
  2301.         [in, out] BSTR * strChars);
  2302.  
  2303.     [id(DISPID_SAX_CONTENTHANDLER_PROCESSINGINSTRUCTION), helpstring("Receive notification of a processing instruction.")]
  2304.     HRESULT processingInstruction(
  2305.         [in, out] BSTR * strTarget,
  2306.         [in, out] BSTR * strData);
  2307.  
  2308.     [id(DISPID_SAX_CONTENTHANDLER_SKIPPEDENTITY), helpstring("Receive notification of a skipped entity.")]
  2309.     HRESULT skippedEntity(
  2310.         [in, out] BSTR * strName);
  2311. };
  2312.  
  2313. [
  2314.     object,
  2315.     local,
  2316.     odl, 
  2317.     dual,
  2318.     oleautomation,
  2319.     nonextensible,
  2320.     uuid(24fb3297-302d-4620-ba39-3a732d850558), // IID_IVBSAXDTDHandler
  2321.     helpstring("IVBSAXDTDHandler interface"),
  2322.     pointer_default(unique)
  2323. ]
  2324. interface IVBSAXDTDHandler : IDispatch
  2325. {   
  2326.     [id(DISPID_SAX_DTDHANDLER_NOTATIONDECL), helpstring("Receive notification of a notation declaration event.")]
  2327.     HRESULT notationDecl(
  2328.         [in, out] BSTR * strName,
  2329.         [in, out] BSTR * strPublicId,
  2330.         [in, out] BSTR * strSystemId);
  2331.  
  2332.     [id(DISPID_SAX_DTDHANDLER_UNPARSEDENTITYDECL), helpstring("Receive notification of an unparsed entity declaration event.")]
  2333.     HRESULT unparsedEntityDecl(
  2334.         [in, out] BSTR * strName,
  2335.         [in, out] BSTR * strPublicId,
  2336.         [in, out] BSTR * strSystemId,
  2337.         [in, out] BSTR * strNotationName);
  2338. };
  2339.  
  2340. [
  2341.     object,
  2342.     local,
  2343.     odl, 
  2344.     dual,
  2345.     oleautomation,
  2346.     nonextensible,
  2347.     uuid(d963d3fe-173c-4862-9095-b92f66995f52), // IID_IVBSAXErrorHandler
  2348.     helpstring("IVBSAXErrorHandler interface"),
  2349.     pointer_default(unique)
  2350. ]
  2351. interface IVBSAXErrorHandler : IDispatch
  2352. {   
  2353.     [id(DISPID_SAX_ERRORHANDLER_ERROR), helpstring("Receive notification of a recoverable error.")]
  2354.     HRESULT error(
  2355.         [in] IVBSAXLocator * oLocator, 
  2356.         [in, out] BSTR * strErrorMessage,
  2357.         [in] long nErrorCode);
  2358.  
  2359.     [id(DISPID_SAX_ERRORHANDLER_FATALERROR), helpstring("Receive notification of a non-recoverable error.")]
  2360.     HRESULT fatalError(
  2361.         [in] IVBSAXLocator * oLocator, 
  2362.         [in, out] BSTR * strErrorMessage,
  2363.         [in] long nErrorCode);
  2364.  
  2365.     [id(DISPID_SAX_ERRORHANDLER_IGNORABLEWARNING), helpstring("Receive notification of an ignorable warning.")]
  2366.     HRESULT ignorableWarning(
  2367.         [in] IVBSAXLocator * oLocator, 
  2368.         [in, out] BSTR * strErrorMessage,
  2369.         [in] long nErrorCode);
  2370. };
  2371.  
  2372. [
  2373.     object,
  2374.     local,
  2375.     odl, 
  2376.     dual,
  2377.     oleautomation,
  2378.     nonextensible,
  2379.     uuid(032aac35-8c0e-4d9d-979f-e3b702935576), // IID_IVBSAXLexicalHandler
  2380.     helpstring("IVBSAXLexicalHandler interface"),
  2381.     pointer_default(unique)
  2382. ]
  2383. interface IVBSAXLexicalHandler : IDispatch 
  2384. {
  2385.     [id(DISPID_SAX_LEXICALHANDLER_STARTDTD), helpstring("Report the start of DTD declarations, if any.")]
  2386.     HRESULT startDTD(
  2387.         [in, out] BSTR * strName,
  2388.         [in, out] BSTR * strPublicId,
  2389.         [in, out] BSTR * strSystemId);
  2390.     [id(DISPID_SAX_LEXICALHANDLER_ENDDTD), helpstring("Report the end of DTD declarations.")]
  2391.     HRESULT endDTD();
  2392.     
  2393.     [id(DISPID_SAX_LEXICALHANDLER_STARTENTITY), helpstring("Report the beginning of some internal and external XML entities.")]
  2394.     HRESULT startEntity(
  2395.         [in, out] BSTR * strName);
  2396.     [id(DISPID_SAX_LEXICALHANDLER_ENDENTITY), helpstring("Report the end of an entity.")]
  2397.     HRESULT endEntity(
  2398.         [in, out] BSTR * strName);
  2399.  
  2400.     [id(DISPID_SAX_LEXICALHANDLER_STARTCDATA), helpstring("Report the start of a CDATA section.")]    
  2401.     HRESULT startCDATA();
  2402.     [id(DISPID_SAX_LEXICALHANDLER_ENDCDATA), helpstring("Report the end of a CDATA section.")]
  2403.     HRESULT endCDATA();
  2404.  
  2405.     [id(DISPID_SAX_LEXICALHANDLER_COMMENT), helpstring("Report an XML comment anywhere in the document.")]    
  2406.     HRESULT comment(
  2407.         [in, out] BSTR * strChars);
  2408. };
  2409.  
  2410. [
  2411.     object,
  2412.     local,
  2413.     odl, 
  2414.     dual,
  2415.     oleautomation,
  2416.     nonextensible,
  2417.     uuid(e8917260-7579-4be1-b5dd-7afbfa6f077b), // IID_IVBSAXDeclHandler
  2418.     helpstring("IVBSAXDeclHandler interface"),
  2419.     pointer_default(unique)
  2420. ]
  2421. interface IVBSAXDeclHandler : IDispatch 
  2422. {
  2423.     [id(DISPID_SAX_DECLHANDLER_ELEMENTDECL), helpstring("Report an element type declaration.")]
  2424.     HRESULT elementDecl(
  2425.         [in, out] BSTR * strName,
  2426.         [in, out] BSTR * strModel);
  2427.     
  2428.     [id(DISPID_SAX_DECLHANDLER_ATTRIBUTEDECL), helpstring("Report an attribute type declaration.")]
  2429.     HRESULT attributeDecl(
  2430.         [in, out] BSTR * strElementName,
  2431.         [in, out] BSTR * strAttributeName,
  2432.         [in, out] BSTR * strType,
  2433.         [in, out] BSTR * strValueDefault,
  2434.         [in, out] BSTR * strValue);
  2435.  
  2436.     [id(DISPID_SAX_DECLHANDLER_INTERNALENTITYDECL), helpstring("Report an internal entity declaration.")]    
  2437.     HRESULT internalEntityDecl(
  2438.         [in, out] BSTR * strName,
  2439.         [in, out] BSTR * strValue);
  2440.  
  2441.     [id(DISPID_SAX_DECLHANDLER_EXTERNALENTITYDECL), helpstring("Report a parsed external entity declaration.")]
  2442.     HRESULT externalEntityDecl(
  2443.         [in, out] BSTR * strName,
  2444.         [in, out] BSTR * strPublicId,
  2445.         [in, out] BSTR * strSystemId);
  2446. };
  2447.  
  2448. [
  2449.     object,
  2450.     local,
  2451.     odl, 
  2452.     dual,
  2453.     oleautomation,
  2454.     nonextensible,
  2455.     uuid(10dc0586-132b-4cac-8bb3-db00ac8b7ee0), // IID_IVBSAXAttributes
  2456.     helpstring("IVBSAXAttributes interface"),
  2457.     pointer_default(unique)
  2458. ]
  2459. interface IVBSAXAttributes : IDispatch
  2460. {   
  2461.     [propget, id(DISPID_SAX_ATTRIBUTES_LENGTH), helpstring("Get the number of attributes in the list.")]
  2462.     HRESULT length(
  2463.         [out, retval] int * nLength);
  2464.  
  2465.     [id(DISPID_SAX_ATTRIBUTES_GETURI), helpstring("Look up an attribute's Namespace URI by index.")]
  2466.     HRESULT getURI(
  2467.         [in] int nIndex,
  2468.         [out, retval] BSTR * strURI);
  2469.  
  2470.     [id(DISPID_SAX_ATTRIBUTES_GETLOCALNAME), helpstring("Look up an attribute's local name by index.")]
  2471.     HRESULT getLocalName(
  2472.         [in] int nIndex,
  2473.         [out, retval] BSTR * strLocalName);
  2474.  
  2475.     [id(DISPID_SAX_ATTRIBUTES_GETQNAME), helpstring("Look up an attribute's XML 1.0 qualified name by index.")]
  2476.     HRESULT getQName(
  2477.         [in] int nIndex,
  2478.         [out, retval] BSTR * strQName);
  2479.  
  2480.     [id(DISPID_SAX_ATTRIBUTES_GETINDEXFROMNAME), helpstring("Look up the index of an attribute by Namespace name.")]
  2481.     HRESULT getIndexFromName(
  2482.         [in] BSTR strURI,
  2483.         [in] BSTR strLocalName,
  2484.         [out, retval] int * nIndex);
  2485.  
  2486.     [id(DISPID_SAX_ATTRIBUTES_GETINDEXFROMQNAME), helpstring("Look up the index of an attribute by XML 1.0 qualified name.")]
  2487.     HRESULT getIndexFromQName(
  2488.         [in] BSTR strQName,
  2489.         [out, retval] int * nIndex);
  2490.  
  2491.     [id(DISPID_SAX_ATTRIBUTES_GETTYPE), helpstring("Look up an attribute's type by index.")]
  2492.     HRESULT getType(
  2493.         [in] int nIndex,
  2494.         [out, retval] BSTR * strType);
  2495.  
  2496.     [id(DISPID_SAX_ATTRIBUTES_GETTYPEFROMNAME), helpstring("Look up an attribute's type by Namespace name.")]
  2497.     HRESULT getTypeFromName(
  2498.         [in] BSTR strURI,
  2499.         [in] BSTR strLocalName,
  2500.         [out, retval] BSTR * strType);
  2501.  
  2502.     [id(DISPID_SAX_ATTRIBUTES_GETTYPEFROMQNAME), helpstring("Look up an attribute's type by XML 1.0 qualified name.")]
  2503.     HRESULT getTypeFromQName(
  2504.         [in] BSTR strQName,
  2505.         [out, retval] BSTR * strType);
  2506.  
  2507.     [id(DISPID_SAX_ATTRIBUTES_GETVALUE), helpstring("Look up an attribute's value by index.")]
  2508.     HRESULT getValue(
  2509.         [in] int nIndex,
  2510.         [out, retval] BSTR * strValue);
  2511.  
  2512.     [id(DISPID_SAX_ATTRIBUTES_GETVALUEFROMNAME), helpstring("Look up an attribute's value by Namespace name.")]
  2513.     HRESULT getValueFromName(
  2514.         [in] BSTR strURI,
  2515.         [in] BSTR strLocalName,
  2516.         [out, retval] BSTR * strValue);
  2517.  
  2518.     [id(DISPID_SAX_ATTRIBUTES_GETVALUEFROMQNAME), helpstring("Look up an attribute's value by XML 1.0 qualified name.")]
  2519.     HRESULT getValueFromQName(
  2520.         [in] BSTR strQName,
  2521.         [out, retval] BSTR * strValue);
  2522. };
  2523.  
  2524. [
  2525.     object,
  2526.     local,
  2527.     odl, 
  2528.     dual,
  2529.     oleautomation,
  2530.     nonextensible,
  2531.     uuid(4d7ff4ba-1565-4ea8-94e1-6e724a46f98d), // IID_IMXWriter
  2532.     helpstring("IMXWriter interface"),
  2533.     pointer_default(unique)
  2534. ]
  2535. interface IMXWriter :  IDispatch 
  2536. {   
  2537.     [propput, id(DISPID_MX_WRITER_OUTPUT), helpstring("Set or get the output.")]
  2538.     HRESULT output (
  2539.         [in] VARIANT varDestination);
  2540.     [propget, id(DISPID_MX_WRITER_OUTPUT), helpstring("Set or get the output.")]
  2541.     HRESULT output (
  2542.         [out, retval] VARIANT * varDestination);
  2543.  
  2544.     [propput, id(DISPID_MX_WRITER_ENCODING), helpstring("Set or get the output encoding.")]
  2545.     HRESULT encoding (
  2546.         [in] BSTR strEncoding);
  2547.     [propget, id(DISPID_MX_WRITER_ENCODING), helpstring("Set or get the output encoding.")]
  2548.     HRESULT encoding (
  2549.         [out, retval] BSTR * strEncoding);
  2550.  
  2551.     [propput, id(DISPID_MX_WRITER_BYTEORDERMARK), helpstring("Determine whether or not to write the byte order mark")]
  2552.     HRESULT byteOrderMark (
  2553.         [in] VARIANT_BOOL fWriteByteOrderMark);
  2554.     [propget, id(DISPID_MX_WRITER_BYTEORDERMARK), helpstring("Determine whether or not to write the byte order mark")]
  2555.     HRESULT byteOrderMark (
  2556.         [out, retval] VARIANT_BOOL * fWriteByteOrderMark);
  2557.  
  2558.     [propput, id(DISPID_MX_WRITER_INDENT), helpstring("Enable or disable auto indent mode.")]
  2559.     HRESULT indent (
  2560.         [in] VARIANT_BOOL fIndentMode);
  2561.     [propget, id(DISPID_MX_WRITER_INDENT), helpstring("Enable or disable auto indent mode.")]
  2562.     HRESULT indent (
  2563.         [out, retval] VARIANT_BOOL * fIndentMode);
  2564.  
  2565.     [propput, id(DISPID_MX_WRITER_STANDALONE), helpstring("Set or get the standalone document declaration.")]
  2566.     HRESULT standalone (
  2567.         [in] VARIANT_BOOL fValue);
  2568.     [propget, id(DISPID_MX_WRITER_STANDALONE), helpstring("Set or get the standalone document declaration.")]
  2569.     HRESULT standalone (
  2570.         [out, retval] VARIANT_BOOL * fValue);
  2571.  
  2572.     [propput, id(DISPID_MX_WRITER_OMITXMLDECLARATION), helpstring("Determine whether or not to omit the XML declaration.")]
  2573.     HRESULT omitXMLDeclaration (
  2574.         [in] VARIANT_BOOL fValue);
  2575.     [propget, id(DISPID_MX_WRITER_OMITXMLDECLARATION), helpstring("Determine whether or not to omit the XML declaration.")]
  2576.     HRESULT omitXMLDeclaration (
  2577.         [out, retval] VARIANT_BOOL * fValue);
  2578.  
  2579.     [propput, id(DISPID_MX_WRITER_VERSION), helpstring("Set or get the xml version info.")]
  2580.     HRESULT version (
  2581.         [in] BSTR strVersion);
  2582.     [propget, id(DISPID_MX_WRITER_VERSION), helpstring("Set or get the xml version info.")]
  2583.     HRESULT version (
  2584.         [out, retval] BSTR * strVersion);
  2585.  
  2586.     [propput, id(DISPID_MX_WRITER_DISABLEOUTPUTESCAPING), helpstring("When enabled, the writer no longer escapes out its input when writing it out.")]
  2587.     HRESULT disableOutputEscaping(
  2588.         [in] VARIANT_BOOL fValue);
  2589.     [propget, id(DISPID_MX_WRITER_DISABLEOUTPUTESCAPING), helpstring("When enabled, the writer no longer escapes out its input when writing it out.")]
  2590.     HRESULT disableOutputEscaping(
  2591.         [out, retval] VARIANT_BOOL * fValue);    
  2592.  
  2593.     [id(DISPID_MX_WRITER_FLUSH), helpstring("Flushes all writer buffers forcing the writer to write to the underlying output object")]
  2594.     HRESULT flush();
  2595. };
  2596.  
  2597. [
  2598.     object,
  2599.     local,
  2600.     odl, 
  2601.     dual,
  2602.     oleautomation,
  2603.     nonextensible,
  2604.     uuid(f10d27cc-3ec0-415c-8ed8-77ab1c5e7262), // IID_IMXAttributes
  2605.     helpstring("IMXAttributes interface"),
  2606.     pointer_default(unique)
  2607. ]
  2608. interface IMXAttributes : IDispatch
  2609. {
  2610.     [id(DISPID_MX_ATTRIBUTES_ADDATTRIBUTE), helpstring("Add an attribute to the end of the list.")]
  2611.     HRESULT addAttribute(
  2612.         [in] BSTR strURI,
  2613.         [in] BSTR strLocalName,
  2614.         [in] BSTR strQName,
  2615.         [in] BSTR strType,
  2616.         [in] BSTR strValue);    
  2617.     
  2618.     [id(DISPID_MX_ATTRIBUTES_ADDATTRIBUTEFROMINDEX), helpstring("Add an attribute, whose value is equal to the indexed attribute in the input attributes object, to the end of the list.")]
  2619.     HRESULT addAttributeFromIndex(
  2620.         [in] VARIANT varAtts,
  2621.         [in] int nIndex);
  2622.  
  2623.     [id(DISPID_MX_ATTRIBUTES_CLEAR), helpstring("Clear the attribute list for reuse.")]
  2624.     HRESULT clear();
  2625.  
  2626.     [id(DISPID_MX_ATTRIBUTES_REMOVEATTRIBUTE), helpstring("Remove an attribute from the list.")]
  2627.     HRESULT removeAttribute(
  2628.         [in] int nIndex); 
  2629.           
  2630.     [id(DISPID_MX_ATTRIBUTES_SETATTRIBUTE), helpstring("Set an attribute in the list.")]
  2631.     HRESULT setAttribute(
  2632.         [in] int nIndex,
  2633.         [in] BSTR strURI,
  2634.         [in] BSTR strLocalName,
  2635.         [in] BSTR strQName,
  2636.         [in] BSTR strType,
  2637.         [in] BSTR strValue);
  2638.  
  2639.     [id(DISPID_MX_ATTRIBUTES_SETATTRIBUTES), helpstring("Copy an entire Attributes object.")]
  2640.     HRESULT setAttributes(
  2641.         [in] VARIANT varAtts);
  2642.            
  2643.     [id(DISPID_MX_ATTRIBUTES_SETLOCALNAME), helpstring("Set the local name of a specific attribute.")]
  2644.     HRESULT setLocalName(
  2645.         [in] int nIndex, 
  2646.         [in] BSTR strLocalName);
  2647.            
  2648.     [id(DISPID_MX_ATTRIBUTES_SETQNAME), helpstring("Set the qualified name of a specific attribute.")]
  2649.     HRESULT setQName(
  2650.         [in] int nIndex, 
  2651.         [in] BSTR strQName);
  2652.            
  2653.     [id(DISPID_MX_ATTRIBUTES_SETTYPE), helpstring("Set the type of a specific attribute.")]
  2654.     HRESULT setType(
  2655.         [in] int nIndex, 
  2656.         [in] BSTR strType);
  2657.            
  2658.     [id(DISPID_MX_ATTRIBUTES_SETURI), helpstring("Set the Namespace URI of a specific attribute.")]
  2659.     HRESULT setURI(
  2660.         [in] int nIndex, 
  2661.         [in] BSTR strURI);
  2662.            
  2663.     [id(DISPID_MX_ATTRIBUTES_SETVALUE), helpstring("Set the value of a specific attribute.")]
  2664.     HRESULT setValue(
  2665.         [in] int nIndex, 
  2666.         [in] BSTR strValue);
  2667. };
  2668.  
  2669. [
  2670.     object,
  2671.     local,
  2672.     odl, 
  2673.     dual,
  2674.     oleautomation,
  2675.     nonextensible,
  2676.     uuid(808f4e35-8d5a-4fbe-8466-33a41279ed30), // IID_IMXReaderControl
  2677.     helpstring("IMXReaderControl interface"),
  2678.     pointer_default(unique)
  2679. ]
  2680. interface IMXReaderControl : IDispatch
  2681. {
  2682.     [id(DISPID_MX_READER_CONTROL_ABORT), helpstring("Abort the reader")]
  2683.     HRESULT abort();
  2684.  
  2685.     [id(DISPID_MX_READER_CONTROL_RESUME), helpstring("Resume the reader")]
  2686.     HRESULT resume();
  2687.  
  2688.     [id(DISPID_MX_READER_CONTROL_SUSPEND), helpstring("Suspend the reader")]
  2689.     HRESULT suspend();
  2690. };
  2691.  
  2692. [
  2693.     object,
  2694.     local,
  2695.     odl, 
  2696.     dual,
  2697.     oleautomation,
  2698.     nonextensible,
  2699.     uuid(fa4bb38c-faf9-4cca-9302-d1dd0fe520db), // IID_IMXSchemaDeclHandler
  2700.     helpstring("IMXSchemaDeclHandler interface"),
  2701.     pointer_default(unique)
  2702. ]
  2703. interface IMXSchemaDeclHandler : IDispatch
  2704. {   
  2705.     [id(DISPID_MX_SCHEMADECLHANDLER_SCHEMAELEMENTDECL), helpstring("Access schema element declaration")]
  2706.     HRESULT schemaElementDecl(
  2707.         [in] ISchemaElement * oSchemaElement);
  2708. };
  2709.  
  2710. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2711. // Namespace Manager
  2712. [
  2713.     local, object,
  2714.     uuid(c90352f4-643c-4fbc-bb23-e996eb2d51fd), // IID_IMXNamespacePrefixes
  2715.     helpstring("IMXNamespacePrefixes interface"),
  2716.     odl, 
  2717.     dual,
  2718.     oleautomation,
  2719.     nonextensible,
  2720.     pointer_default(unique)
  2721. ]
  2722. interface IMXNamespacePrefixes : IDispatch
  2723. {
  2724.     [propget, id(DISPID_VALUE)]                       HRESULT item([in]long index, [out,retval]BSTR* prefix);
  2725.     [propget, id(DISPID_MX_NSMGR_LENGTH)]             HRESULT length([out,retval]long* length);
  2726.     [propget, restricted, hidden, id(DISPID_NEWENUM)] HRESULT _newEnum([out,retval]IUnknown** ppUnk);
  2727. };
  2728.  
  2729. [
  2730.     local, object,
  2731.     uuid(c90352f5-643c-4fbc-bb23-e996eb2d51fd), // IID_IVBMXNamespaceManager
  2732.     helpstring("IVBMXNamespaceManager interface"),
  2733.     odl, 
  2734.     dual,
  2735.     oleautomation,
  2736.     nonextensible,
  2737.     pointer_default(unique)
  2738. ]
  2739. interface IVBMXNamespaceManager : IDispatch
  2740. {
  2741.     [propput, id(DISPID_MX_NSMGR_ALLOWOVERRIDE)]
  2742.     HRESULT allowOverride([in] VARIANT_BOOL fOverride);
  2743.  
  2744.     [propget, id(DISPID_MX_NSMGR_ALLOWOVERRIDE)]
  2745.     HRESULT allowOverride([out,retval] VARIANT_BOOL* fOverride);
  2746.  
  2747.     [id(DISPID_MX_NSMGR_RESET)]
  2748.     HRESULT reset();
  2749.  
  2750.     [id(DISPID_MX_NSMGR_PUSHCONTEXT)]
  2751.     HRESULT pushContext();
  2752.  
  2753.     [id(DISPID_MX_NSMGR_PUSHNODECONTEXT)]
  2754.     HRESULT pushNodeContext(
  2755.                     [in] IXMLDOMNode* contextNode,
  2756.                     [in, defaultvalue(-1)] VARIANT_BOOL fDeep);
  2757.  
  2758.     [id(DISPID_MX_NSMGR_POPCONTEXT)]
  2759.     HRESULT popContext();
  2760.  
  2761.     [id(DISPID_MX_NSMGR_DECLAREPREFIX)]
  2762.     HRESULT declarePrefix(
  2763.                     [in] BSTR prefix, 
  2764.                     [in] BSTR namespaceURI);
  2765.  
  2766.     [id(DISPID_MX_NSMGR_GETDECLAREDPREFIXES)]
  2767.     HRESULT getDeclaredPrefixes(
  2768.                     [out, retval] IMXNamespacePrefixes** prefixes);
  2769.  
  2770.     [id(DISPID_MX_NSMGR_GETPREFIXES)]
  2771.     HRESULT getPrefixes(
  2772.                     [in] BSTR namespaceURI, 
  2773.                     [out, retval] IMXNamespacePrefixes** prefixes);
  2774.  
  2775.     [id(DISPID_MX_NSMGR_GETURI)]
  2776.     HRESULT getURI(
  2777.                     [in] BSTR prefix, 
  2778.                     [out, retval] VARIANT* uri);
  2779.  
  2780.     [id(DISPID_MX_NSMGR_GETURIFROMNODE)]
  2781.     HRESULT getURIFromNode(
  2782.                     [in] BSTR strPrefix, 
  2783.                     [in] IXMLDOMNode* contextNode,
  2784.                     [out, retval] VARIANT* uri);
  2785. };
  2786.  
  2787. [
  2788.     hidden, 
  2789.     object,
  2790.     local,
  2791.     uuid(c90352f6-643c-4fbc-bb23-e996eb2d51fd), // IID_IMXNamespaceManager
  2792.     helpstring("IMXNamespaceManager interface"),
  2793.     pointer_default(unique)
  2794. ]
  2795. interface IMXNamespaceManager : IUnknown
  2796. {
  2797.     HRESULT putAllowOverride([in] VARIANT_BOOL fOverride);
  2798.  
  2799.     HRESULT getAllowOverride([out,retval] VARIANT_BOOL* fOverride);
  2800.  
  2801.     HRESULT reset();
  2802.  
  2803.     HRESULT pushContext();
  2804.  
  2805.     HRESULT pushNodeContext(
  2806.                     [in] IXMLDOMNode* contextNode,
  2807.                     [in] VARIANT_BOOL fDeep);
  2808.  
  2809.     HRESULT popContext();
  2810.  
  2811.     HRESULT declarePrefix(
  2812.                     [in] const wchar_t* prefix,
  2813.                     [in] const wchar_t* namespaceURI);
  2814.  
  2815.     HRESULT getDeclaredPrefix(
  2816.                     [in] long nIndex, 
  2817.                     [in, out] wchar_t* pwchPrefix,
  2818.                     [in, out] int* pcchPrefix);
  2819.  
  2820.     HRESULT getPrefix(
  2821.                     [in] const wchar_t* pwszNamespaceURI,
  2822.                     [in] long nIndex,
  2823.                     [in, out] wchar_t* pwchPrefix,
  2824.                     [in, out] int* pcchPrefix);
  2825.  
  2826.     HRESULT getURI(
  2827.                     [in] const wchar_t* pwchPrefix,
  2828.                     [in] IXMLDOMNode* pContextNode,
  2829.                     [in, out] wchar_t* pwchUri, 
  2830.                     [in, out] int* pcchUri);
  2831. };
  2832.  
  2833. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2834. // Schema Object Model
  2835. typedef [
  2836.     helpstring("Schema Object Model Item Types")
  2837. ]
  2838. enum _SOMITEMTYPE
  2839. {
  2840.     SOMITEM_SCHEMA                      = 0x1000,
  2841.     SOMITEM_ATTRIBUTE                   = 0x1001,
  2842.     SOMITEM_ATTRIBUTEGROUP              = 0x1002,
  2843.     SOMITEM_NOTATION                    = 0x1003,
  2844.  
  2845.     SOMITEM_IDENTITYCONSTRAINT          = 0x1100, // identity constraints
  2846.     SOMITEM_KEY                         = 0x1101,
  2847.     SOMITEM_KEYREF                      = 0x1102,
  2848.     SOMITEM_UNIQUE                      = 0x1103,
  2849.  
  2850.     SOMITEM_ANYTYPE                     = 0x2000, // Types
  2851.     SOMITEM_DATATYPE                    = 0x2100,
  2852.     SOMITEM_DATATYPE_ANYTYPE            = 0x2101,
  2853.     SOMITEM_DATATYPE_ANYURI             = 0x2102,
  2854.     SOMITEM_DATATYPE_BASE64BINARY       = 0x2103,
  2855.     SOMITEM_DATATYPE_BOOLEAN            = 0x2104,
  2856.     SOMITEM_DATATYPE_BYTE               = 0x2105,
  2857.     SOMITEM_DATATYPE_DATE               = 0x2106,
  2858.     SOMITEM_DATATYPE_DATETIME           = 0x2107, 
  2859.     SOMITEM_DATATYPE_DAY                = 0x2108,
  2860.     SOMITEM_DATATYPE_DECIMAL            = 0x2109,
  2861.     SOMITEM_DATATYPE_DOUBLE             = 0x210A,
  2862.     SOMITEM_DATATYPE_DURATION           = 0x210B, 
  2863.     SOMITEM_DATATYPE_ENTITIES           = 0x210C,
  2864.     SOMITEM_DATATYPE_ENTITY             = 0x210D,
  2865.     SOMITEM_DATATYPE_FLOAT              = 0x210E,
  2866.     SOMITEM_DATATYPE_HEXBINARY          = 0x210F,
  2867.     SOMITEM_DATATYPE_ID                 = 0x2110,
  2868.     SOMITEM_DATATYPE_IDREF              = 0x2111,
  2869.     SOMITEM_DATATYPE_IDREFS             = 0x2112,
  2870.     SOMITEM_DATATYPE_INT                = 0x2113,
  2871.     SOMITEM_DATATYPE_INTEGER            = 0x2114,
  2872.     SOMITEM_DATATYPE_LANGUAGE           = 0x2115,
  2873.     SOMITEM_DATATYPE_LONG               = 0x2116,
  2874.     SOMITEM_DATATYPE_MONTH              = 0x2117,
  2875.     SOMITEM_DATATYPE_MONTHDAY           = 0x2118, 
  2876.     SOMITEM_DATATYPE_NAME               = 0x2119,
  2877.     SOMITEM_DATATYPE_NCNAME             = 0x211A,
  2878.     SOMITEM_DATATYPE_NEGATIVEINTEGER    = 0x211B,
  2879.     SOMITEM_DATATYPE_NMTOKEN            = 0x211C,
  2880.     SOMITEM_DATATYPE_NMTOKENS           = 0x211D,
  2881.     SOMITEM_DATATYPE_NONNEGATIVEINTEGER = 0x211E,
  2882.     SOMITEM_DATATYPE_NONPOSITIVEINTEGER = 0x211F,
  2883.     SOMITEM_DATATYPE_NORMALIZEDSTRING   = 0x2120,
  2884.     SOMITEM_DATATYPE_NOTATION           = 0x2121,
  2885.     SOMITEM_DATATYPE_POSITIVEINTEGER    = 0x2122,
  2886.     SOMITEM_DATATYPE_QNAME              = 0x2123,
  2887.     SOMITEM_DATATYPE_SHORT              = 0x2124,
  2888.     SOMITEM_DATATYPE_STRING             = 0x2125,
  2889.     SOMITEM_DATATYPE_TIME               = 0x2126,
  2890.     SOMITEM_DATATYPE_TOKEN              = 0x2127,
  2891.     SOMITEM_DATATYPE_UNSIGNEDBYTE       = 0x2128,
  2892.     SOMITEM_DATATYPE_UNSIGNEDINT        = 0x2129,
  2893.     SOMITEM_DATATYPE_UNSIGNEDLONG       = 0x212A,
  2894.     SOMITEM_DATATYPE_UNSIGNEDSHORT      = 0x212B,
  2895.     SOMITEM_DATATYPE_YEAR               = 0x212C,
  2896.     SOMITEM_DATATYPE_YEARMONTH          = 0x212D,
  2897.     SOMITEM_DATATYPE_ANYSIMPLETYPE      = 0x21FF,
  2898.  
  2899.     SOMITEM_SIMPLETYPE                  = 0x2200,
  2900.     SOMITEM_COMPLEXTYPE                 = 0x2400,
  2901.  
  2902.     SOMITEM_PARTICLE                    = 0x4000, // particles
  2903.     SOMITEM_ANY                         = 0x4001,
  2904.     SOMITEM_ANYATTRIBUTE                = 0x4002,
  2905.     SOMITEM_ELEMENT                     = 0x4003,
  2906.  
  2907.     SOMITEM_GROUP                       = 0x4100, // groups : particles
  2908.     SOMITEM_ALL                         = 0x4101,
  2909.     SOMITEM_CHOICE                      = 0x4102,
  2910.     SOMITEM_SEQUENCE                    = 0x4103,
  2911.     SOMITEM_EMPTYPARTICLE               = 0x4104,
  2912.  
  2913.     SOMITEM_NULL                        = 0x0800, // null items
  2914.     SOMITEM_NULL_TYPE                   = 0x2800,
  2915.     SOMITEM_NULL_ANY                    = 0x4801, 
  2916.     SOMITEM_NULL_ANYATTRIBUTE           = 0x4802,
  2917.     SOMITEM_NULL_ELEMENT                = 0x4803,
  2918. } SOMITEMTYPE;
  2919.  
  2920. typedef [
  2921.     helpstring("Schema Object Model Attribute Uses")
  2922. ]
  2923. enum _SCHEMAUSE
  2924. {
  2925.     SCHEMAUSE_OPTIONAL,    // 0
  2926.     SCHEMAUSE_PROHIBITED,  // 1
  2927.     SCHEMAUSE_REQUIRED,    // 2
  2928. } SCHEMAUSE;
  2929.  
  2930. typedef [
  2931.     helpstring("Schema Object Model Filters")
  2932. ] enum _SCHEMADERIVATIONMETHOD
  2933. {
  2934.     SCHEMADERIVATIONMETHOD_EMPTY        = 0x0000,
  2935.     SCHEMADERIVATIONMETHOD_SUBSTITUTION = 0x0001,
  2936.     SCHEMADERIVATIONMETHOD_EXTENSION    = 0x0002,
  2937.     SCHEMADERIVATIONMETHOD_RESTRICTION  = 0x0004,
  2938.     SCHEMADERIVATIONMETHOD_LIST         = 0x0008,
  2939.     SCHEMADERIVATIONMETHOD_UNION        = 0x0010,
  2940.     SCHEMADERIVATIONMETHOD_ALL          = 0x00FF,
  2941.     SCHEMADERIVATIONMETHOD_NONE         = 0x0100,
  2942. } SCHEMADERIVATIONMETHOD;
  2943.  
  2944. typedef [
  2945.     helpstring("Schema Object Model Content Types")
  2946. ] enum _SCHEMACONTENTTYPE
  2947. {
  2948.     SCHEMACONTENTTYPE_EMPTY,
  2949.     SCHEMACONTENTTYPE_TEXTONLY,
  2950.     SCHEMACONTENTTYPE_ELEMENTONLY,
  2951.     SCHEMACONTENTTYPE_MIXED,
  2952. } SCHEMACONTENTTYPE;
  2953.  
  2954. typedef [
  2955.     helpstring("Schema Object Model Process Contents")
  2956. ] enum _SCHEMAPROCESSCONTENTS
  2957. {
  2958.     SCHEMAPROCESSCONTENTS_NONE,
  2959.     SCHEMAPROCESSCONTENTS_SKIP,
  2960.     SCHEMAPROCESSCONTENTS_LAX,
  2961.     SCHEMAPROCESSCONTENTS_STRICT,
  2962. } SCHEMAPROCESSCONTENTS;
  2963.  
  2964. typedef [
  2965.     helpstring("Schema Object Model Whitespace facet values")
  2966. ] enum _SCHEMAWHITESPACE
  2967. {
  2968.     SCHEMAWHITESPACE_NONE       = -1,
  2969.     SCHEMAWHITESPACE_PRESERVE   =  0,
  2970.     SCHEMAWHITESPACE_REPLACE    =  1,
  2971.     SCHEMAWHITESPACE_COLLAPSE   =  2,
  2972. } SCHEMAWHITESPACE;
  2973.  
  2974.  
  2975. typedef [
  2976.     helpstring("Schema Object Model Type variety values")
  2977. ] enum _SCHEMATYPEVARIETY
  2978. {
  2979.     SCHEMATYPEVARIETY_NONE      = -1,
  2980.     SCHEMATYPEVARIETY_ATOMIC    =  0,
  2981.     SCHEMATYPEVARIETY_LIST      =  1,
  2982.     SCHEMATYPEVARIETY_UNION     =  2,
  2983. }SCHEMATYPEVARIETY;
  2984.  
  2985. [
  2986.     local, object,
  2987.     uuid(50ea08b0-dd1b-4664-9a50-c2f40f4bd79a), // IID_IXMLDOMSchemaCollection2
  2988.     odl, 
  2989.     dual,
  2990.     oleautomation,
  2991.     nonextensible,
  2992.     helpstring("XML Schemas Collection 2"),
  2993.     pointer_default(unique)
  2994. ]
  2995. interface IXMLDOMSchemaCollection2 : IXMLDOMSchemaCollection
  2996. {
  2997.     [id(DISPID_SOM_VALIDATE)]       HRESULT validate();
  2998.     [id(DISPID_SOM_VALIDATEONLOAD), propput] HRESULT validateOnLoad([in]VARIANT_BOOL validateOnLoad);
  2999.     [id(DISPID_SOM_VALIDATEONLOAD), propget] HRESULT validateOnLoad([out,retval]VARIANT_BOOL* validateOnLoad);
  3000.     [id(DISPID_SOM_GETSCHEMA)]      HRESULT getSchema([in]BSTR namespaceURI, [out,retval]ISchema** schema);
  3001.     [id(DISPID_SOM_GETDECLARATION)] HRESULT getDeclaration([in]IXMLDOMNode* node, [out,retval]ISchemaItem** item);
  3002. };
  3003.  
  3004. [
  3005.     local, object,
  3006.     uuid(50ea08b1-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaStringCollection
  3007.     odl, 
  3008.     dual,
  3009.     oleautomation,
  3010.     nonextensible,
  3011.     helpstring("XML Schema String Collection"),
  3012.     pointer_default(unique)
  3013. ]
  3014. interface ISchemaStringCollection : IDispatch 
  3015. {
  3016.     [id(DISPID_VALUE), propget]                       HRESULT item([in]long index, [out,retval]BSTR* bstr);
  3017.     [id(DISPID_SOM_LENGTH), propget]                  HRESULT length([out,retval]long* length);
  3018.     [id(DISPID_NEWENUM), hidden, restricted, propget] HRESULT _newEnum([out,retval]IUnknown** ppunk);
  3019. }; 
  3020.  
  3021. [
  3022.     local, object,
  3023.     uuid(50ea08b2-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaItemCollection
  3024.     odl, 
  3025.     dual,
  3026.     oleautomation,
  3027.     nonextensible,
  3028.     helpstring("XML Schema Item Collection"),
  3029.     pointer_default(unique)
  3030. ]
  3031. interface ISchemaItemCollection : IDispatch 
  3032. {
  3033.     [id(DISPID_VALUE), propget]                       HRESULT item([in]long index, [out,retval]ISchemaItem** item);
  3034.     [id(DISPID_SOM_ITEMBYNAME)]                       HRESULT itemByName([in]BSTR name, [out,retval]ISchemaItem** item);
  3035.     [id(DISPID_SOM_ITEMBYQNAME)]                      HRESULT itemByQName([in]BSTR name, [in]BSTR namespaceURI, [out,retval]ISchemaItem** item);
  3036.     [id(DISPID_SOM_LENGTH), propget]                  HRESULT length([out,retval]long* length);
  3037.     [id(DISPID_NEWENUM), hidden, restricted, propget] HRESULT _newEnum([out,retval]IUnknown** ppunk);
  3038. };
  3039.  
  3040. [
  3041.     local, object,
  3042.     uuid(50ea08b3-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaItem
  3043.     odl, 
  3044.     dual,
  3045.     oleautomation,
  3046.     nonextensible,
  3047.     helpstring("XML Schema Item"),
  3048.     pointer_default(unique)
  3049. ]
  3050. interface ISchemaItem : IDispatch 
  3051. {
  3052.     [id(DISPID_SOM_NAME), propget]           HRESULT name([out,retval]BSTR* name);
  3053.     [id(DISPID_SOM_NAMESPACEURI), propget]   HRESULT namespaceURI([out,retval]BSTR* namespaceURI);
  3054.     [id(DISPID_SOM_SCHEMA), propget]         HRESULT schema([out,retval]ISchema** schema);
  3055.     [id(DISPID_SOM_ID), propget]             HRESULT id([out,retval]BSTR* id);
  3056.     [id(DISPID_SOM_ITEMTYPE), propget]       HRESULT itemType([out,retval]SOMITEMTYPE* itemType);
  3057.     [id(DISPID_SOM_UNHANDLEDATTRS), propget] HRESULT unhandledAttributes([out,retval]IVBSAXAttributes** attributes);
  3058.     [id(DISPID_SOM_WRITEANNOTATION)]         HRESULT writeAnnotation([in]IUnknown* annotationSink, [out,retval]VARIANT_BOOL* isWritten);
  3059. }; 
  3060.  
  3061. [
  3062.     local, object,
  3063.     uuid(50ea08b4-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchema
  3064.     odl, 
  3065.     dual,
  3066.     oleautomation,
  3067.     nonextensible,
  3068.     helpstring("XML Schema"),
  3069.     pointer_default(unique)
  3070. ]
  3071. interface ISchema : ISchemaItem 
  3072. {
  3073.     [id(DISPID_SOM_TARGETNAMESPACE), propget] HRESULT targetNamespace([out,retval]BSTR* targetNamespace);
  3074.     [id(DISPID_SOM_VERSION), propget]         HRESULT version([out,retval]BSTR* version);
  3075.     [id(DISPID_SOM_TYPES), propget]           HRESULT types([out,retval]ISchemaItemCollection** types);
  3076.     [id(DISPID_SOM_ELEMENTS), propget]        HRESULT elements([out,retval]ISchemaItemCollection** elements);
  3077.     [id(DISPID_SOM_ATTRIBUTES), propget]      HRESULT attributes([out,retval]ISchemaItemCollection** attributes);
  3078.     [id(DISPID_SOM_ATTRIBUTEGROUPS), propget] HRESULT attributeGroups([out,retval]ISchemaItemCollection** attributeGroups);
  3079.     [id(DISPID_SOM_MODELGROUPS), propget]     HRESULT modelGroups([out,retval]ISchemaItemCollection** modelGroups);
  3080.     [id(DISPID_SOM_NOTATIONS), propget]       HRESULT notations([out,retval]ISchemaItemCollection** notations);
  3081.     [id(DISPID_SOM_SCHEMALOCATIONS), propget] HRESULT schemaLocations([out,retval]ISchemaStringCollection** schemaLocations);
  3082. }; 
  3083.  
  3084. [
  3085.     local, object,
  3086.     uuid(50ea08b5-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaParticle
  3087.     odl, 
  3088.     dual,
  3089.     oleautomation,
  3090.     nonextensible,
  3091.     helpstring("XML Schema Particle"),
  3092.     pointer_default(unique)
  3093. ]
  3094. interface ISchemaParticle : ISchemaItem
  3095. {
  3096.     [id(DISPID_SOM_MINOCCURS), propget] HRESULT minOccurs([out,retval]VARIANT* minOccurs);
  3097.     [id(DISPID_SOM_MAXOCCURS), propget] HRESULT maxOccurs([out,retval]VARIANT* maxOccurs);
  3098. }; 
  3099.  
  3100. [
  3101.     local, object,
  3102.     uuid(50ea08b6-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaAttribute
  3103.     odl, 
  3104.     dual,
  3105.     oleautomation,
  3106.     nonextensible,
  3107.     helpstring("XML Schema Attribute"),
  3108.     pointer_default(unique)
  3109. ]
  3110. interface ISchemaAttribute : ISchemaItem 
  3111. {
  3112.     [id(DISPID_SOM_TYPE), propget]         HRESULT type([out,retval]ISchemaType** type);
  3113.     [id(DISPID_SOM_SCOPE), propget]        HRESULT scope([out,retval]ISchemaComplexType** scope);
  3114.     [id(DISPID_SOM_DEFAULTVALUE), propget] HRESULT defaultValue([out,retval]BSTR* defaultValue);
  3115.     [id(DISPID_SOM_FIXEDVALUE), propget]   HRESULT fixedValue([out,retval]BSTR* fixedValue);
  3116.     [id(DISPID_SOM_USE), propget]          HRESULT use([out,retval]SCHEMAUSE* use);
  3117.     [id(DISPID_SOM_ISREFERENCE), propget]  HRESULT isReference([out,retval]VARIANT_BOOL* reference);
  3118. }; 
  3119.  
  3120. [
  3121.     local, object,
  3122.     uuid(50ea08b7-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaElement
  3123.     odl, 
  3124.     dual,
  3125.     oleautomation,
  3126.     nonextensible,
  3127.     helpstring("XML Schema Element"),
  3128.     pointer_default(unique)
  3129. ]
  3130. interface ISchemaElement : ISchemaParticle 
  3131. {
  3132.     [id(DISPID_SOM_TYPE), propget]              HRESULT type([out,retval]ISchemaType** type);
  3133.     [id(DISPID_SOM_SCOPE), propget]             HRESULT scope([out,retval]ISchemaComplexType** scope);
  3134.     [id(DISPID_SOM_DEFAULTVALUE), propget]      HRESULT defaultValue([out,retval]BSTR* defaultValue);
  3135.     [id(DISPID_SOM_FIXEDVALUE), propget]        HRESULT fixedValue([out,retval]BSTR* fixedValue);
  3136.     [id(DISPID_SOM_ISNILLABLE), propget]        HRESULT isNillable([out,retval]VARIANT_BOOL* nillable);
  3137.     [id(DISPID_SOM_IDCONSTRAINTS), propget]     HRESULT identityConstraints([out,retval]ISchemaItemCollection** constraints);
  3138.     [id(DISPID_SOM_SUBSTITUTIONGROUP), propget] HRESULT substitutionGroup([out,retval]ISchemaElement** element);
  3139.     [id(DISPID_SOM_EXCLUSIONS), propget]        HRESULT substitutionGroupExclusions([out,retval]SCHEMADERIVATIONMETHOD* exclusions);
  3140.     [id(DISPID_SOM_DISALLOWED), propget]        HRESULT disallowedSubstitutions([out,retval]SCHEMADERIVATIONMETHOD* disallowed);
  3141.     [id(DISPID_SOM_ISABSTRACT), propget]        HRESULT isAbstract([out,retval]VARIANT_BOOL* abstract);
  3142.     [id(DISPID_SOM_ISREFERENCE), propget]       HRESULT isReference([out,retval]VARIANT_BOOL* reference);
  3143. }; 
  3144.  
  3145. [
  3146.     local, object,
  3147.     uuid(50ea08b8-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaType
  3148.     odl, 
  3149.     dual,
  3150.     oleautomation,
  3151.     nonextensible,
  3152.     helpstring("XML Schema Type"),
  3153.     pointer_default(unique)
  3154. ]
  3155. interface ISchemaType : ISchemaItem 
  3156. {
  3157.     [id(DISPID_SOM_BASETYPES), propget]      HRESULT baseTypes([out,retval]ISchemaItemCollection** baseTypes);
  3158.     [id(DISPID_SOM_FINAL), propget]          HRESULT final([out,retval]SCHEMADERIVATIONMETHOD* final);
  3159.     [id(DISPID_SOM_VARIETY), propget]        HRESULT variety([out,retval]SCHEMATYPEVARIETY* variety);
  3160.     [id(DISPID_SOM_DERIVEDBY), propget]      HRESULT derivedBy([out,retval]SCHEMADERIVATIONMETHOD* derivedBy);
  3161.     [id(DISPID_SOM_ISVALID)]                 HRESULT isValid([in]BSTR data, [out,retval]VARIANT_BOOL* valid);
  3162.     // Facets 
  3163.     [id(DISPID_SOM_MINEXCLUSIVE), propget]   HRESULT minExclusive([out,retval]BSTR* minExclusive);
  3164.     [id(DISPID_SOM_MININCLUSIVE), propget]   HRESULT minInclusive([out,retval]BSTR* minInclusive);
  3165.     [id(DISPID_SOM_MAXEXCLUSIVE), propget]   HRESULT maxExclusive([out,retval]BSTR* maxExclusive);
  3166.     [id(DISPID_SOM_MAXINCLUSIVE), propget]   HRESULT maxInclusive([out,retval]BSTR* maxInclusive);
  3167.     [id(DISPID_SOM_TOTALDIGITS), propget]    HRESULT totalDigits([out,retval]VARIANT* totalDigits);
  3168.     [id(DISPID_SOM_FRACTIONDIGITS), propget] HRESULT fractionDigits([out,retval]VARIANT* fractionDigits);
  3169.     [id(DISPID_SOM_LENGTH), propget]         HRESULT length([out,retval]VARIANT* length);
  3170.     [id(DISPID_SOM_MINLENGTH), propget]      HRESULT minLength([out,retval]VARIANT* minLength);
  3171.     [id(DISPID_SOM_MAXLENGTH), propget]      HRESULT maxLength([out,retval]VARIANT* maxLength);
  3172.     [id(DISPID_SOM_ENUMERATION), propget]    HRESULT enumeration([out,retval]ISchemaStringCollection** enumeration);
  3173.     [id(DISPID_SOM_WHITESPACE), propget]     HRESULT whitespace([out,retval]SCHEMAWHITESPACE* whitespace);
  3174.     [id(DISPID_SOM_PATTERNS), propget]       HRESULT patterns([out,retval]ISchemaStringCollection** patterns);
  3175. }; 
  3176.  
  3177. [
  3178.     local, object,
  3179.     uuid(50ea08b9-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaComplexType
  3180.     odl, 
  3181.     dual,
  3182.     oleautomation,
  3183.     nonextensible,
  3184.     helpstring("XML Schema Complex Type"),
  3185.     pointer_default(unique)
  3186. ]
  3187. interface ISchemaComplexType : ISchemaType 
  3188. {
  3189.     [id(DISPID_SOM_ISABSTRACT), propget]   HRESULT isAbstract([out,retval]VARIANT_BOOL* abstract);
  3190.     [id(DISPID_SOM_ANYATTRIBUTE), propget] HRESULT anyAttribute([out,retval]ISchemaAny** anyAttribute);
  3191.     [id(DISPID_SOM_ATTRIBUTES), propget]   HRESULT attributes([out,retval]ISchemaItemCollection** attributes);
  3192.     [id(DISPID_SOM_CONTENTTYPE), propget]  HRESULT contentType([out,retval]SCHEMACONTENTTYPE* contentType);
  3193.     [id(DISPID_SOM_CONTENTMODEL), propget] HRESULT contentModel([out,retval]ISchemaModelGroup** contentModel);
  3194.     [id(DISPID_SOM_PROHIBITED), propget]   HRESULT prohibitedSubstitutions([out,retval]SCHEMADERIVATIONMETHOD* prohibited);
  3195. }; 
  3196.  
  3197. [
  3198.     local, object,
  3199.     uuid(50ea08ba-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaAttributeGroup
  3200.     odl, 
  3201.     dual,
  3202.     oleautomation,
  3203.     nonextensible,
  3204.     helpstring("XML Schema Attribute Group"),
  3205.     pointer_default(unique)
  3206. ]
  3207. interface ISchemaAttributeGroup : ISchemaItem 
  3208. {
  3209.     [id(DISPID_SOM_ANYATTRIBUTE), propget]    HRESULT anyAttribute([out,retval]ISchemaAny** anyAttribute);
  3210.     [id(DISPID_SOM_ATTRIBUTES), propget]      HRESULT attributes([out,retval]ISchemaItemCollection** attributes);
  3211. }; 
  3212.  
  3213. [
  3214.     local, object,
  3215.     uuid(50ea08bb-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaModelGroup
  3216.     odl, 
  3217.     dual,
  3218.     oleautomation,
  3219.     nonextensible,
  3220.     helpstring("XML Schema Type"),
  3221.     pointer_default(unique)
  3222. ]
  3223. interface ISchemaModelGroup : ISchemaParticle 
  3224. {
  3225.     [id(DISPID_SOM_PARTICLES), propget] HRESULT particles([out,retval]ISchemaItemCollection** particles);
  3226. }; 
  3227.  
  3228. [
  3229.     local, object,
  3230.     uuid(50ea08bc-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaAny
  3231.     odl, 
  3232.     dual,
  3233.     oleautomation,
  3234.     nonextensible,
  3235.     helpstring("XML Schema Any"),
  3236.     pointer_default(unique)
  3237. ]
  3238. interface ISchemaAny : ISchemaParticle 
  3239. {
  3240.     [id(DISPID_SOM_NAMESPACES), propget]      HRESULT namespaces([out,retval]ISchemaStringCollection** namespaces);
  3241.     [id(DISPID_SOM_PROCESSCONTENTS), propget] HRESULT processContents([out,retval]SCHEMAPROCESSCONTENTS* processContents);
  3242. }; 
  3243.  
  3244. [
  3245.     local, object,
  3246.     uuid(50ea08bd-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaIdentityConstraint
  3247.     odl, 
  3248.     dual,
  3249.     oleautomation,
  3250.     nonextensible,
  3251.     helpstring("XML Schema Any"),
  3252.     pointer_default(unique)
  3253. ]
  3254. interface ISchemaIdentityConstraint : ISchemaItem 
  3255. {
  3256.     [id(DISPID_SOM_SELECTOR), propget]      HRESULT selector([out,retval]BSTR* selector);
  3257.     [id(DISPID_SOM_FIELDS), propget]        HRESULT fields([out,retval]ISchemaStringCollection** fields);
  3258.     [id(DISPID_SOM_REFERENCEDKEY), propget] HRESULT referencedKey([out,retval]ISchemaIdentityConstraint** key);
  3259. }; 
  3260.  
  3261. [
  3262.     local, object,
  3263.     uuid(50ea08be-dd1b-4664-9a50-c2f40f4bd79a), // IID_ISchemaNotation
  3264.     odl, 
  3265.     dual,
  3266.     oleautomation,
  3267.     nonextensible,
  3268.     helpstring("XML Schema Notation"),
  3269.     pointer_default(unique)
  3270. ]
  3271. interface ISchemaNotation : ISchemaItem 
  3272. {
  3273.     [id(DISPID_SOM_SYSTEMIDENTIFIER), propget] HRESULT systemIdentifier([out,retval]BSTR* uri);
  3274.     [id(DISPID_SOM_PUBLICIDENTIFIER), propget] HRESULT publicIdentifier([out,retval]BSTR* uri);
  3275. }; 
  3276.  
  3277. //+-------------------------------------------------------------------------
  3278. //
  3279. // IE4 Interfaces
  3280. //
  3281. //--------------------------------------------------------------------------
  3282.  
  3283.  
  3284. #ifndef IMPORTED_MSXML
  3285. [
  3286.     local, object,
  3287.     uuid(65725580-9B5D-11d0-9BFE-00C04FC99C8E), // IID_IXMLElementCollection
  3288.     odl, 
  3289.     dual,
  3290.     oleautomation,
  3291.     hidden, // replaced by IDOMNodeList
  3292.     helpstring("IXMLElementCollection helps to enumerate through a XML document tree.")
  3293. ]
  3294. interface IXMLElementCollection : IDispatch
  3295. {
  3296.     [propput, restricted, hidden, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)] HRESULT length([in] long v);
  3297.     [propget, id(DISPID_XMLELEMENTCOLLECTION_LENGTH), helpstring("get number of elements in this IXMLElementCollection.")] HRESULT length([retval, out] long * p);
  3298.     [propget, restricted, hidden, id(DISPID_XMLELEMENTCOLLECTION_NEWENUM)] HRESULT _newEnum([retval, out] IUnknown ** ppUnk);
  3299.     [id(DISPID_XMLELEMENTCOLLECTION_ITEM), helpstring("get current item, or (optional) by index and name.")] HRESULT item([optional, in] VARIANT var1,[optional, in] VARIANT var2,[retval, out] IDispatch ** ppDisp);
  3300. };
  3301.  
  3302. [
  3303.     local, object,
  3304.     uuid(F52E2B61-18A1-11d1-B105-00805F49916B), // IID_IXMLDocument
  3305.     odl, 
  3306.     dual,
  3307.     oleautomation,
  3308.     hidden, // replaced by IDOMDocument 
  3309.     helpstring("IXMLDocument loads and saves XML document. This is obsolete. You should use IDOMDocument or IXMLDOMDocument.")
  3310. ]
  3311. interface IXMLDocument : IDispatch
  3312. {
  3313.     [propget, id(DISPID_XMLDOCUMENT_ROOT), helpstring("get root IXMLElement of the XML document.")] HRESULT root ([retval, out] IXMLElement * * p);
  3314.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_FILESIZE)] HRESULT fileSize([retval, out] BSTR * p);
  3315.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)] HRESULT fileModifiedDate([retval, out] BSTR * p);
  3316.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)] HRESULT fileUpdatedDate([retval, out] BSTR * p);
  3317.     [propget, id(DISPID_XMLDOCUMENT_URL), helpstring("set URL to load an XML document from the URL.")] HRESULT URL([retval, out] BSTR * p);
  3318.     [propput, id(DISPID_XMLDOCUMENT_URL), helpstring("get url.")] HRESULT URL([in] BSTR p);
  3319.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_MIMETYPE)] HRESULT mimeType([retval, out] BSTR * p);
  3320.     [propget, id(DISPID_XMLDOCUMENT_READYSTATE), helpstring("get ready state.")] HRESULT readyState([retval, out]long *pl);
  3321.     [propget, id(DISPID_XMLDOCUMENT_CHARSET), helpstring("get encoding.")]  HRESULT charset([retval, out]BSTR *p);
  3322.     [propput, id(DISPID_XMLDOCUMENT_CHARSET), helpstring("set encoding.")]  HRESULT charset([in]BSTR p);
  3323.     [propget, id(DISPID_XMLDOCUMENT_VERSION), helpstring("get XML version number.")]  HRESULT version([retval, out]BSTR *p);
  3324.     [propget, id(DISPID_XMLDOCUMENT_DOCTYPE), helpstring("get document type.")]  HRESULT doctype([retval, out]BSTR *p);
  3325.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_DTDURL)]   HRESULT dtdURL([retval, out]BSTR *p);
  3326.     [id(DISPID_XMLDOCUMENT_CREATEELEMENT), helpstring("create different types of IXMLElements.")] HRESULT createElement([in] VARIANT vType, [optional, in] VARIANT var1, [retval, out] IXMLElement * * ppElem);
  3327. };
  3328. #endif
  3329.  
  3330. [
  3331.     local, object,
  3332.     uuid(2B8DE2FE-8D2D-11d1-B2FC-00C04FD915A9), // IID_IXMLDocument2
  3333.     hidden  // Because that this interface is the default interface of coclass XMLDocument
  3334. ]
  3335. interface IXMLDocument2 : IDispatch
  3336. {
  3337.     [propget, id(DISPID_XMLDOCUMENT_ROOT), helpstring("get root IXMLElement of the XML document.")] HRESULT root ([retval, out] IXMLElement2 * * p);
  3338.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_FILESIZE)] HRESULT fileSize([retval, out] BSTR * p);
  3339.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)] HRESULT fileModifiedDate([retval, out] BSTR * p);
  3340.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)] HRESULT fileUpdatedDate([retval, out] BSTR * p);
  3341.     [propget, id(DISPID_XMLDOCUMENT_URL), helpstring("set URL to load an XML document from the URL.")] HRESULT URL([retval, out] BSTR * p);
  3342.     [propput, id(DISPID_XMLDOCUMENT_URL), helpstring("get url.")] HRESULT URL([in] BSTR p);
  3343.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_MIMETYPE)] HRESULT mimeType([retval, out] BSTR * p);
  3344.     [propget, id(DISPID_XMLDOCUMENT_READYSTATE), helpstring("get ready state.")] HRESULT readyState([retval, out]long *pl);
  3345.     [propget, id(DISPID_XMLDOCUMENT_CHARSET), helpstring("get encoding.")]  HRESULT charset([retval, out]BSTR *p);
  3346.     [propput, id(DISPID_XMLDOCUMENT_CHARSET), helpstring("set encoding.")]  HRESULT charset([in]BSTR p);
  3347.     [propget, id(DISPID_XMLDOCUMENT_VERSION), helpstring("get XML version number.")]  HRESULT version([retval, out]BSTR *p);
  3348.     [propget, id(DISPID_XMLDOCUMENT_DOCTYPE), helpstring("get document type.")]  HRESULT doctype([retval, out]BSTR *p);
  3349.     [propget, restricted, hidden, id(DISPID_XMLDOCUMENT_DTDURL)]   HRESULT dtdURL([retval, out]BSTR *p);
  3350.     [id(DISPID_XMLDOCUMENT_CREATEELEMENT), helpstring("create different types of IXMLElements.")] HRESULT createElement([in] VARIANT vType, [optional, in] VARIANT var1, [retval, out] IXMLElement2 * * ppElem);
  3351.     [propget, id(DISPID_XMLDOCUMENT_ASYNC), helpstring("get asynchronous loading flag.")] HRESULT async([retval, out] VARIANT_BOOL * pf);
  3352.     [propput, id(DISPID_XMLDOCUMENT_ASYNC), helpstring("set flag to turn on/off asynchronous loading.")] HRESULT async([in] VARIANT_BOOL f);
  3353. };
  3354.  
  3355. #ifndef IMPORTED_MSXML
  3356. [
  3357.     local, object,
  3358.     uuid(3F7F31AC-E15F-11d0-9C25-00C04FC99C8E), // IID_IXMLElement
  3359.     odl, 
  3360.     dual,
  3361.     oleautomation,
  3362.     hidden, // replaced by IDOMNode
  3363.     helpstring("IXMLElement represents an element in the XML document tree.")
  3364. ]
  3365. interface IXMLElement : IDispatch
  3366. {
  3367.     [propget, id(DISPID_XMLELEMENT_TAGNAME), helpstring("get tag name.")] HRESULT tagName([retval, out] BSTR * p);
  3368.     [propput, id(DISPID_XMLELEMENT_TAGNAME), helpstring("set tag name.")] HRESULT tagName([in] BSTR p);
  3369.     [propget, id(DISPID_XMLELEMENT_PARENT), helpstring("get parent IXMLElement.")] HRESULT parent([retval, out]IXMLElement **ppParent);
  3370.     [id(DISPID_XMLELEMENT_SETATTRIBUTE), helpstring("set attribute.")] HRESULT setAttribute([in] BSTR strPropertyName,[in] VARIANT PropertyValue);
  3371.     [id(DISPID_XMLELEMENT_GETATTRIBUTE), helpstring("get attribute.")] HRESULT getAttribute([in] BSTR strPropertyName,[retval, out] VARIANT* PropertyValue);
  3372.     [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE), helpstring("remove attribute.")] HRESULT removeAttribute([in] BSTR strPropertyName);
  3373.     [propget, id(DISPID_XMLELEMENT_CHILDREN), helpstring("get a IXMLElementCollection of children.")] HRESULT children([retval, out] IXMLElementCollection * * pp);
  3374.     [propget, id(DISPID_XMLELEMENT_TYPE), helpstring("get type of this IXMLElement.")] HRESULT type([retval, out] long *plType);
  3375.     [propget, id(DISPID_XMLELEMENT_TEXT), helpstring("get text.")] HRESULT text([retval, out] BSTR *p);
  3376.     [propput, id(DISPID_XMLELEMENT_TEXT), helpstring("set text.")] HRESULT text([in] BSTR p);
  3377.     [id(DISPID_XMLELEMENT_ADDCHILD), helpstring("add a child.")] HRESULT addChild([in] IXMLElement *pChildElem, long lIndex, long lReserved); // lReserved must be -1
  3378.     [id(DISPID_XMLELEMENT_REMOVECHILD), helpstring("remove a child.")] HRESULT removeChild([in]IXMLElement *pChildElem);
  3379. }
  3380. #endif
  3381.  
  3382. [
  3383.     local, object,
  3384.     uuid(2B8DE2FF-8D2D-11d1-B2FC-00C04FD915A9), // IID_IXMLElement2
  3385.     odl, 
  3386.     dual,
  3387.     oleautomation,
  3388.     hidden, // replaced by IDOMNode
  3389.     helpstring("IXMLElement2 extends IXMLElement.")
  3390. ]
  3391. interface IXMLElement2 : IDispatch
  3392. {
  3393.     [propget, id(DISPID_XMLELEMENT_TAGNAME), helpstring("get tag name.")] HRESULT tagName([retval, out] BSTR * p);
  3394.     [propput, id(DISPID_XMLELEMENT_TAGNAME), helpstring("set tag name.")] HRESULT tagName([in] BSTR p);
  3395.     [propget, id(DISPID_XMLELEMENT_PARENT), helpstring("get parent IXMLElement.")] HRESULT parent([retval, out]IXMLElement2 **ppParent);
  3396.     [id(DISPID_XMLELEMENT_SETATTRIBUTE), helpstring("set attribute.")] HRESULT setAttribute([in] BSTR strPropertyName,[in] VARIANT PropertyValue);
  3397.     [id(DISPID_XMLELEMENT_GETATTRIBUTE), helpstring("get attribute.")] HRESULT getAttribute([in] BSTR strPropertyName,[retval, out] VARIANT* PropertyValue);
  3398.     [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE), helpstring("remove attribute.")] HRESULT removeAttribute([in] BSTR strPropertyName);
  3399.     [propget, id(DISPID_XMLELEMENT_CHILDREN), helpstring("get a IXMLElementCollection of all children.")] HRESULT children([retval, out] IXMLElementCollection * * pp);
  3400.     [propget, id(DISPID_XMLELEMENT_TYPE), helpstring("get type of this IXMLElement.")] HRESULT type([retval, out] long *plType);
  3401.     [propget, id(DISPID_XMLELEMENT_TEXT), helpstring("get text.")] HRESULT text([retval, out] BSTR *p);
  3402.     [propput, id(DISPID_XMLELEMENT_TEXT), helpstring("set text.")] HRESULT text([in] BSTR p);
  3403.     [id(DISPID_XMLELEMENT_ADDCHILD), helpstring("add a child.")] HRESULT addChild([in] IXMLElement2 *pChildElem, long lIndex, long lReserved); // lReserved must be -1
  3404.     [id(DISPID_XMLELEMENT_REMOVECHILD), helpstring("remove a child.")] HRESULT removeChild([in]IXMLElement2 *pChildElem);
  3405.     [propget, id(DISPID_XMLELEMENT_ATTRIBUTES), helpstring("get a IXMLElementCollection of all attributes.")] HRESULT attributes([retval, out] IXMLElementCollection ** pp); 
  3406. };
  3407.  
  3408. [
  3409.     local, object,
  3410.     uuid(D4D4A0FC-3B73-11d1-B2B4-00C04FB92596), // IID_IXMLAttribute
  3411.     odl, 
  3412.     dual,
  3413.     oleautomation,
  3414.     hidden, // replaced by IDOMNode
  3415.     helpstring("IXMLAttribute allows to get attributes of an IXMLElement.")
  3416. ]
  3417. interface IXMLAttribute : IDispatch
  3418. {
  3419.     [propget, id(DISPID_XMLATTRIBUTE_NAME), helpstring("get attribute name.")] HRESULT name([retval, out] BSTR* n);
  3420.     [propget, id(DISPID_XMLATTRIBUTE_VALUE), helpstring("get attribute value.")] HRESULT value([retval, out] BSTR* v);
  3421. };
  3422.  
  3423. #ifndef IMPORTED_MSXML
  3424. [
  3425.     local, object,
  3426.     uuid(948C5AD3-C58D-11d0-9C0B-00C04FC99C8E), // IID_IXMLError
  3427.     odl, 
  3428.     hidden, // this is not scriptable.
  3429.     helpstring("Gets error info.")
  3430. ]
  3431. interface IXMLError : IUnknown
  3432. {
  3433.     HRESULT GetErrorInfo(XML_ERROR *pErrorReturn);
  3434. }
  3435. #endif
  3436.  
  3437. //+-------------------------------------------------------------------------
  3438. //
  3439. //  CoClasses
  3440. //
  3441. //--------------------------------------------------------------------------
  3442.  
  3443.  
  3444. // DOM Document rental-model co-Class, version independent
  3445. [
  3446.     uuid(F6D90F11-9C73-11D3-B32E-00C04F990BB4), // CLSID_DOMDocument
  3447.     helpstring("W3C-DOM XML Document (Apartment)")
  3448. ]
  3449. coclass DOMDocument
  3450. {
  3451.     [default] interface IXMLDOMDocument2;
  3452.     [default, source] dispinterface XMLDOMDocumentEvents;
  3453. };
  3454.  
  3455.  // DOM Document rental-model co-Class, 2.6 version dependent
  3456. [
  3457.     uuid(f5078f1b-c551-11d3-89b9-0000f81fe221), // CLSID_DOMDocument26
  3458.     helpstring("W3C-DOM XML Document (Apartment)")
  3459. ]
  3460. coclass DOMDocument26
  3461. {
  3462.     [default] interface IXMLDOMDocument2;
  3463.     [default, source] dispinterface XMLDOMDocumentEvents;
  3464. };
  3465.  
  3466.  // DOM Document rental-model co-Class, 3.0 version dependent
  3467. [
  3468.     uuid(f5078f32-c551-11d3-89b9-0000f81fe221), // CLSID_DOMDocument30
  3469.     helpstring("W3C-DOM XML Document (Apartment)")
  3470. ]
  3471. coclass DOMDocument30
  3472. {
  3473.     [default] interface IXMLDOMDocument2;
  3474.     [default, source] dispinterface XMLDOMDocumentEvents;
  3475. };
  3476.  
  3477.  // DOM Document rental-model co-Class, 4.0 version dependent
  3478. [
  3479.     uuid(88d969c0-f192-11d4-a65f-0040963251e5), // CLSID_DOMDocument40
  3480.     helpstring("W3C-DOM XML Document (Apartment)")
  3481. ]
  3482. coclass DOMDocument40
  3483. {
  3484.     [default] interface IXMLDOMDocument2;
  3485.     [default, source] dispinterface XMLDOMDocumentEvents;
  3486. };
  3487.  
  3488.  
  3489.  // DOM Document free-threaded co-Class, version independent
  3490. [
  3491.     uuid(F6D90F12-9C73-11D3-B32E-00C04F990BB4), // CLSID_FreeThreadedDOMDocument
  3492.     helpstring("W3C-DOM XML Document (Free threaded)")
  3493. ]
  3494. coclass FreeThreadedDOMDocument
  3495. {
  3496.     [default] interface IXMLDOMDocument2;
  3497.     [default, source] dispinterface XMLDOMDocumentEvents;
  3498. };
  3499.  
  3500.  // DOM Document free-threaded co-Class, 2.6 version dependent
  3501. [
  3502.     uuid(f5078f1c-c551-11d3-89b9-0000f81fe221), // CLSID_FreeThreadedDOMDocument26
  3503.     helpstring("W3C-DOM XML Document (Free threaded)")
  3504. ]
  3505. coclass FreeThreadedDOMDocument26
  3506. {
  3507.     [default] interface IXMLDOMDocument2;
  3508.     [default, source] dispinterface XMLDOMDocumentEvents;
  3509. };
  3510.  
  3511.  // DOM Document free-threaded co-Class, 3.0 version dependent
  3512. [
  3513.     uuid(f5078f33-c551-11d3-89b9-0000f81fe221), // CLSID_FreeThreadedDOMDocument30
  3514.     helpstring("W3C-DOM XML Document (Free threaded)")
  3515. ]
  3516. coclass FreeThreadedDOMDocument30
  3517. {
  3518.     [default] interface IXMLDOMDocument2;
  3519.     [default, source] dispinterface XMLDOMDocumentEvents;
  3520. };
  3521.  
  3522. // DOM Document free-threaded co-Class, 4.0 version dependent
  3523. [
  3524.     uuid(88d969c1-f192-11d4-a65f-0040963251e5), // CLSID_FreeThreadedDOMDocument40
  3525.     helpstring("W3C-DOM XML Document (Free threaded)")
  3526. ]
  3527. coclass FreeThreadedDOMDocument40
  3528. {
  3529.     [default] interface IXMLDOMDocument2;
  3530.     [default, source] dispinterface XMLDOMDocumentEvents;
  3531. };
  3532.  
  3533.  
  3534.  // XML Schema Cache, version independent
  3535. [
  3536.     uuid(373984c9-b845-449b-91e7-45ac83036ade),
  3537.     helpstring("object for caching schemas")
  3538. ]
  3539. coclass XMLSchemaCache
  3540. {
  3541.     [default] interface IXMLDOMSchemaCollection;
  3542. };
  3543.  
  3544.  // XML Schema Cache, version 2.6 dependent
  3545. [
  3546.     uuid(f5078f1d-c551-11d3-89b9-0000f81fe221),
  3547.     helpstring("object for caching schemas")
  3548. ]
  3549. coclass XMLSchemaCache26
  3550. {
  3551.     [default] interface IXMLDOMSchemaCollection;
  3552. };
  3553.  
  3554. // XML Schema Cache, version 3.0 dependent
  3555. [
  3556.     uuid(f5078f34-c551-11d3-89b9-0000f81fe221),
  3557.     helpstring("object for caching schemas")
  3558. ]
  3559. coclass XMLSchemaCache30
  3560. {
  3561.     [default] interface IXMLDOMSchemaCollection;
  3562. };
  3563.  
  3564. // XML Schema Cache, version 4.0 dependent
  3565. [
  3566.     uuid(88d969c2-f192-11d4-a65f-0040963251e5),
  3567.     helpstring("object for caching schemas")
  3568. ]
  3569. coclass XMLSchemaCache40
  3570. {
  3571.     [default] interface IXMLDOMSchemaCollection2;
  3572. };
  3573.  
  3574.  
  3575. // XSLTemplate, version independent
  3576. [
  3577.     uuid(2933BF94-7B36-11d2-B20E-00C04F983E60), // CLSID_XMLDOMXSLTemplate (Progid=Msxml2.XMLDOMXSLTemplate)
  3578.     helpstring("object for caching compiled XSL stylesheets")
  3579. ]
  3580. coclass XSLTemplate
  3581. {
  3582.     [default] interface IXSLTemplate;
  3583. };
  3584.  
  3585. // XSLTemplate, 2.6 version dependent
  3586. [
  3587.     uuid(f5078f21-c551-11d3-89b9-0000f81fe221), // CLSID_XMLDOMXSLTemplate (Progid=Microsoft.XMLDOMXSLTemplate)
  3588.     helpstring("object for caching compiled XSL stylesheets")
  3589. ]
  3590. coclass XSLTemplate26
  3591. {
  3592.     [default] interface IXSLTemplate;
  3593. };
  3594.  
  3595. // XSLTemplate, 3.0 version dependent
  3596. [
  3597.     uuid(f5078f36-c551-11d3-89b9-0000f81fe221), // CLSID_XMLDOMXSLTemplate30 (Progid=Msxml2.XMLDOMXSLTemplate.3.0)
  3598.     helpstring("object for caching compiled XSL stylesheets")
  3599. ]
  3600. coclass XSLTemplate30
  3601. {
  3602.     [default] interface IXSLTemplate;
  3603. };
  3604.  
  3605. // XSLTemplate, 4.0 version dependent
  3606. [
  3607.     uuid(88d969c3-f192-11d4-a65f-0040963251e5), // CLSID_XMLDOMXSLTemplate40 (Progid=Msxml2.XMLDOMXSLTemplate.4.0)
  3608.     helpstring("object for caching compiled XSL stylesheets")
  3609. ]
  3610. coclass XSLTemplate40
  3611. {
  3612.     [default] interface IXSLTemplate;
  3613. };
  3614.  
  3615.  
  3616. // XMLDSO, version independent
  3617. [
  3618.     uuid(F6D90F14-9C73-11D3-B32E-00C04F990BB4),
  3619.     helpstring("XML Data Source Object")
  3620. ]
  3621. coclass DSOControl
  3622. {
  3623.     [default] interface IDSOControl;
  3624. };
  3625.  
  3626. // DSOControl, 2.6 version dependent
  3627. [
  3628.     uuid(f5078f1f-c551-11d3-89b9-0000f81fe221),
  3629.     helpstring("XML Data Source Object")
  3630. ]
  3631. coclass DSOControl26
  3632. {
  3633.     [default] interface IDSOControl;
  3634. };
  3635.  
  3636. // DSOControl, 3.0 version dependent
  3637. [
  3638.     uuid(f5078f39-c551-11d3-89b9-0000f81fe221),
  3639.     helpstring("XML Data Source Object")
  3640. ]
  3641. coclass DSOControl30
  3642. {
  3643.     [default] interface IDSOControl;
  3644. };
  3645.  
  3646. // DSOControl, 4.0 version dependent
  3647. [
  3648.     uuid(88d969c4-f192-11d4-a65f-0040963251e5),
  3649.     helpstring("XML Data Source Object")
  3650. ]
  3651. coclass DSOControl40
  3652. {
  3653.     [default] interface IDSOControl;
  3654. };
  3655.  
  3656.  
  3657. // XML HTTP Request Class, version independent
  3658. [
  3659.     uuid(F6D90F16-9C73-11D3-B32E-00C04F990BB4), // CLSID_XMLHTTP
  3660.     helpstring("XML HTTP Request class.")
  3661. ]
  3662. coclass XMLHTTP
  3663. {
  3664.     [default] interface IXMLHTTPRequest;
  3665. };
  3666.  
  3667. // XML HTTP Request Class, 2.6, version dependent
  3668. [
  3669.     uuid(f5078f1e-c551-11d3-89b9-0000f81fe221), // CLSID_XMLHTTP26
  3670.     helpstring("XML HTTP Request class.")
  3671. ]
  3672. coclass XMLHTTP26
  3673. {
  3674.     [default] interface IXMLHTTPRequest;
  3675. };
  3676.  
  3677. // XML HTTP Request Class, 3.0, version dependent
  3678. [
  3679.     uuid(f5078f35-c551-11d3-89b9-0000f81fe221), // CLSID_XMLHTTP30
  3680.     helpstring("XML HTTP Request class.")
  3681. ]
  3682. coclass XMLHTTP30
  3683. {
  3684.     [default] interface IXMLHTTPRequest;
  3685. };
  3686.  
  3687. // XML HTTP Request Class, 4.0, version dependent
  3688. [
  3689.     uuid(88d969c5-f192-11d4-a65f-0040963251e5), // CLSID_XMLHTTP40
  3690.     helpstring("XML HTTP Request class.")
  3691. ]
  3692. coclass XMLHTTP40
  3693. {
  3694.     [default] interface IXMLHTTPRequest;
  3695. };
  3696.  
  3697.  
  3698. // Server XML HTTP Request Class, version independent
  3699. [
  3700.     uuid(afba6b42-5692-48ea-8141-dc517dcf0ef1), // CLSID_ServerXMLHTTP
  3701.     helpstring("Server XML HTTP Request class.")
  3702. ]
  3703. coclass ServerXMLHTTP
  3704. {
  3705.     [default] interface IServerXMLHTTPRequest2;
  3706. }
  3707.  
  3708. // Server XML HTTP Request Class, 3.0, version dependent
  3709. [
  3710.     uuid(afb40ffd-b609-40a3-9828-f88bbe11e4e3), // CLSID_ServerXMLHTTP30
  3711.     helpstring("Server XML HTTP Request class.")
  3712. ]
  3713. coclass ServerXMLHTTP30
  3714. {
  3715.     [default] interface IServerXMLHTTPRequest2;
  3716. }
  3717.  
  3718. // Server XML HTTP Request Class, 4.0, version dependent
  3719. [
  3720.     uuid(88d969c6-f192-11d4-a65f-0040963251e5), // CLSID_ServerXMLHTTP40
  3721.     helpstring("Server XML HTTP Request class.")
  3722. ]
  3723. coclass ServerXMLHTTP40
  3724. {
  3725.     [default] interface IServerXMLHTTPRequest2;
  3726. }
  3727.  
  3728.  
  3729. // SAXXMLReader co-class, version independent
  3730. [
  3731.     uuid(079aa557-4a18-424a-8eee-e39f0a8d41b9), // CLSID_SAXXMLReader
  3732.     helpstring("SAX XML Reader (version independent) coclass")
  3733. ]
  3734. coclass SAXXMLReader
  3735. {
  3736.     [default] interface IVBSAXXMLReader;
  3737.     interface ISAXXMLReader;
  3738.     interface IMXReaderControl;
  3739. };
  3740.  
  3741. // SAXXMLReader co-class, 3.0 version dependent
  3742. [
  3743.     uuid(3124c396-fb13-4836-a6ad-1317f1713688), // CLSID_SAXXMLReader30
  3744.     helpstring("SAX XML Reader 3.0 coclass")
  3745. ]
  3746. coclass SAXXMLReader30
  3747. {
  3748.     [default] interface IVBSAXXMLReader;
  3749.     interface ISAXXMLReader;
  3750.     interface IMXReaderControl;
  3751. };
  3752.  
  3753. // SAXXMLReader co-class, 4.0 version dependent
  3754. [
  3755.     uuid(7c6e29bc-8b8b-4c3d-859e-af6cd158be0f), // CLSID_SAXXMLReader40
  3756.     helpstring("SAX XML Reader 4.0 coclass")
  3757. ]
  3758. coclass SAXXMLReader40
  3759. {
  3760.     [default] interface IVBSAXXMLReader;
  3761.     interface ISAXXMLReader;
  3762. };
  3763.  
  3764.  
  3765. // MXXMLWriter co-class, version independent
  3766. [
  3767.     uuid(fc220ad8-a72a-4ee8-926e-0b7ad152a020), // CLSID_MXXMLWriter
  3768.     helpstring("Microsoft XML Writer (version independent) coclass")
  3769. ]
  3770. coclass MXXMLWriter
  3771. {
  3772.     [default] interface IMXWriter;
  3773.  
  3774.     interface ISAXContentHandler;
  3775.     interface ISAXErrorHandler;
  3776.     interface ISAXDTDHandler;
  3777.     interface ISAXLexicalHandler;
  3778.     interface ISAXDeclHandler;
  3779.  
  3780.     interface IVBSAXContentHandler;    
  3781.     interface IVBSAXDeclHandler;
  3782.     interface IVBSAXDTDHandler;
  3783.     interface IVBSAXErrorHandler;
  3784.     interface IVBSAXLexicalHandler;
  3785. };
  3786.  
  3787. // MXXMLWriter co-class, 3.0 version dependent
  3788. [
  3789.     uuid(3d813dfe-6c91-4a4e-8f41-04346a841d9c), // CLSID_MXXMLWriter30
  3790.     helpstring("Microsoft XML Writer 3.0 coclass")
  3791. ]
  3792. coclass MXXMLWriter30
  3793. {
  3794.     [default] interface IMXWriter;
  3795.  
  3796.     interface ISAXContentHandler;    
  3797.     interface ISAXDeclHandler;
  3798.     interface ISAXDTDHandler;
  3799.     interface ISAXErrorHandler;
  3800.     interface ISAXLexicalHandler;
  3801.  
  3802.     interface IVBSAXContentHandler;    
  3803.     interface IVBSAXDeclHandler;
  3804.     interface IVBSAXDTDHandler;
  3805.     interface IVBSAXErrorHandler;
  3806.     interface IVBSAXLexicalHandler;
  3807. };
  3808.  
  3809. // MXXMLWriter co-class, 4.0 version dependent
  3810. [
  3811.     uuid(88d969c8-f192-11d4-a65f-0040963251e5), // CLSID_MXXMLWriter40
  3812.     helpstring("Microsoft XML Writer 4.0 coclass")
  3813. ]
  3814. coclass MXXMLWriter40
  3815. {
  3816.     [default] interface IMXWriter;
  3817.  
  3818.     interface ISAXContentHandler;    
  3819.     interface ISAXDeclHandler;
  3820.     interface ISAXDTDHandler;
  3821.     interface ISAXErrorHandler;
  3822.     interface ISAXLexicalHandler;
  3823.  
  3824.     interface IVBSAXContentHandler;    
  3825.     interface IVBSAXDeclHandler;
  3826.     interface IVBSAXDTDHandler;
  3827.     interface IVBSAXErrorHandler;
  3828.     interface IVBSAXLexicalHandler;
  3829. };
  3830.  
  3831.  
  3832. // MXHTMLWriter co-class, version independent
  3833. [
  3834.     uuid(a4c23ec3-6b70-4466-9127-550077239978), // CLSID_MXHTMLWriter
  3835.     helpstring("Microsoft HTML Writer (version independent) coclass")
  3836. ]
  3837. coclass MXHTMLWriter
  3838. {
  3839.     [default] interface IMXWriter;
  3840.  
  3841.     interface ISAXContentHandler;
  3842.     interface ISAXErrorHandler;
  3843.     interface ISAXDTDHandler;
  3844.     interface ISAXLexicalHandler;
  3845.     interface ISAXDeclHandler;
  3846.  
  3847.     interface IVBSAXContentHandler;    
  3848.     interface IVBSAXDeclHandler;
  3849.     interface IVBSAXDTDHandler;
  3850.     interface IVBSAXErrorHandler;
  3851.     interface IVBSAXLexicalHandler;
  3852. };
  3853.  
  3854. // MXHTMLWriter co-class, 3.0 version dependent
  3855. [
  3856.     uuid(853d1540-c1a7-4aa9-a226-4d3bd301146d), // CLSID_MXHTMLWriter30
  3857.     helpstring("Microsoft HTML Writer 3.0 coclass")
  3858. ]
  3859. coclass MXHTMLWriter30
  3860. {
  3861.     [default] interface IMXWriter;
  3862.  
  3863.     interface ISAXContentHandler;    
  3864.     interface ISAXDeclHandler;
  3865.     interface ISAXDTDHandler;
  3866.     interface ISAXErrorHandler;
  3867.     interface ISAXLexicalHandler;
  3868.  
  3869.     interface IVBSAXContentHandler;    
  3870.     interface IVBSAXDeclHandler;
  3871.     interface IVBSAXDTDHandler;
  3872.     interface IVBSAXErrorHandler;
  3873.     interface IVBSAXLexicalHandler;
  3874. };
  3875.  
  3876. // MXHTMLWriter co-class, 4.0 version dependent
  3877. [
  3878.     uuid(88d969c9-f192-11d4-a65f-0040963251e5), // CLSID_MXHTMLWriter40
  3879.     helpstring("Microsoft HTML Writer 4.0 coclass")
  3880. ]
  3881. coclass MXHTMLWriter40
  3882. {
  3883.     [default] interface IMXWriter;
  3884.  
  3885.     interface ISAXContentHandler;    
  3886.     interface ISAXDeclHandler;
  3887.     interface ISAXDTDHandler;
  3888.     interface ISAXErrorHandler;
  3889.     interface ISAXLexicalHandler;
  3890.  
  3891.     interface IVBSAXContentHandler;    
  3892.     interface IVBSAXDeclHandler;
  3893.     interface IVBSAXDTDHandler;
  3894.     interface IVBSAXErrorHandler;
  3895.     interface IVBSAXLexicalHandler;
  3896. };
  3897.  
  3898.  
  3899. // SAXAttributes co-class, version independent
  3900. [
  3901.     uuid(4dd441ad-526d-4a77-9f1b-9841ed802fb0), // CLSID_SAXAttributes
  3902.     helpstring("SAX Attributes (version independent) coclass")
  3903. ]
  3904. coclass SAXAttributes
  3905. {
  3906.     [default] interface IMXAttributes;
  3907.     interface IVBSAXAttributes;    
  3908.     interface ISAXAttributes;
  3909. };
  3910.  
  3911. // SAXAttributes co-class, 3.0 version dependent
  3912. [
  3913.     uuid(3e784a01-f3ae-4dc0-9354-9526b9370eba), // CLSID_SAXAttributes30
  3914.     helpstring("SAX Attributes 3.0 coclass")
  3915. ]
  3916. coclass SAXAttributes30
  3917. {
  3918.     [default] interface IMXAttributes;
  3919.     interface IVBSAXAttributes;    
  3920.     interface ISAXAttributes;
  3921. };
  3922.  
  3923. // SAXAttributes co-class, 4.0 version dependent
  3924. [
  3925.     uuid(88d969ca-f192-11d4-a65f-0040963251e5), // CLSID_SAXAttributes40
  3926.     helpstring("SAX Attributes 4.0 coclass")
  3927. ]
  3928. coclass SAXAttributes40
  3929. {
  3930.     [default] interface IMXAttributes;
  3931.     interface IVBSAXAttributes;    
  3932.     interface ISAXAttributes;
  3933. };
  3934.  
  3935. // MXNamespaceManager co-class version independent
  3936. [
  3937.     uuid(88d969d5-f192-11d4-a65f-0040963251e5), // CLSID_MXNamespaceManager
  3938.     helpstring("MX Namespace Manager coclass")
  3939. ]
  3940. coclass MXNamespaceManager
  3941. {
  3942.     [default] interface IVBMXNamespaceManager;
  3943.     interface IMXNamespaceManager;
  3944. };
  3945.  
  3946. // MXNamespaceManager co-class, 4.0 version dependent
  3947. [
  3948.     uuid(88d969d6-f192-11d4-a65f-0040963251e5), // CLSID_MXNamespaceManager40
  3949.     helpstring("MX Namespace Manager 4.0 coclass")
  3950. ]
  3951. coclass MXNamespaceManager40
  3952. {
  3953.     [default] interface IVBMXNamespaceManager;
  3954.     interface IMXNamespaceManager;
  3955. };
  3956.  
  3957. #ifndef IMPORTED_MSXML
  3958. // XML Document Class, IE4 version
  3959. [
  3960.     uuid(CFC399AF-D876-11d0-9C10-00C04FC99C8E), // CLSID_XMLDocument
  3961.     helpstring("XMLDocument extends IXML Document.  It is obsolete.  You should use DOMDocument.  This object should not be confused with the XMLDocument property on the XML data island."),
  3962.     hidden // replaced by DOMDocument 
  3963. ]
  3964. coclass XMLDocument
  3965. {
  3966.     [default] interface IXMLDocument2;
  3967. }
  3968. #endif
  3969.  
  3970. }
  3971.  
  3972. cpp_quote("//----------------------------")
  3973. cpp_quote("// MSXML SPECIFIC ERROR CODES ")
  3974. cpp_quote("//----------------------------")
  3975. cpp_quote("#define E_XML_NOTWF                0xC00CE223L  // Validate failed because the document is not well formed.")
  3976. cpp_quote("#define E_XML_NODTD                0xC00CE224L  // Validate failed because a DTD/Schema was not specified in the document.")
  3977. cpp_quote("#define E_XML_INVALID              0xC00CE225L  // Validate failed because of a DTD/Schema violation.")
  3978. cpp_quote("#define E_XML_BUFFERTOOSMALL       0xC00CE226L  // Buffer passed in is too small to receive the data.")
  3979.  
  3980.  
  3981. cpp_quote("#ifdef __USE_MSXML2_NAMESPACE__")
  3982. cpp_quote("}")
  3983. cpp_quote("#endif")
  3984.  
  3985.